Git学习笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git学习笔记相关的知识,希望对你有一定的参考价值。
先去申请个GitHub账号方便后面远程仓库管理
一.准备工作
1.安装:http://msysgit.github.io/
2.配置账号信息:
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
git config --list 查看配置的信息
git help config 获取帮助信息
注:使用git config命令的--global参数之后,表示当前机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的username和Email地址
3.配置密钥(使用远程仓库必备)
$ ssh-keygen -t rsa -C "[email protected]"
一路回车,使用默认值即可,配置完后用户主目录里找到.ssh目录,里面有id_rsa(私钥)和id_rsa.pub(公钥)两个文件。
进github官网登陆账号打开设置,点击SSH and GPG keys,创建一个key,然后复制id_rsa.pub里的内容粘贴到key,添加即可。
二.新建仓库
$ mkdir <name> //创建一个本地目录 $ cd <name> //进入目录 $ git init //初始化一个Git仓库 $ git add <file> //添加文件到Git仓库,命令git add --all 可添加多个文件 $ git commit -m "描述" //提交到仓库 $ git remote add origin [email protected]:<giihub-name>/<name>.git //关联远程库 $ git push -u origin master //-u用于第一次推送master分支的所有内容到远程仓库,以后不需要用了。
当第一次使用Git的clone
或者push
命令连接GitHub时会得到一个警告,输入yes
回车即可
也可以直接从远程现有仓库克隆
$ git clone [email protected]:<github-name>/<name>.git
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
git add readme.txt 报错 pathspec ‘readme.txt‘ did not match any files
解决办法
1.手动创建一个文件
2.通过git命令创建touch readme.txt
基本命令
$ cat <file> //查看文件 $ git help //获取命令的帮助信息 $ pwd //显示当前目录 $ git rm <file-name> //移除文件,移出后记得要git commit $ git status //命令查看当前仓库的状态; $ git diff //查看修改的内容 $ git diff HEAD -- <name> //查看当前版本文件和远程仓库版本的区别 $ git log //查看历史记录,显示从最近到最远的提交日志。 $ git log --pretty=oneline //日志行状显示 $ git reflog //查看命令历史列表; $ git reset --hard <版本号> //直接返回到指定版本,版本号没必要写全,前几位就可以了 $ git reset --hard HEAD^ //版本回退到上一个版本 HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,上100个版本简写成HEAD~100 $ git reset HEAD <file-name> //取消已经暂存的文件 $ git checkout -- <file-name> //撤销修改,让这个文件回到最近一次git commit或git add时的状态
git 回退到某版本后,再在此版本上更新,无法push的问题
用$git reset --hard HEAD^回退版本,这种“回退”就是在否认历史,如果仅仅你自己在使用,那么强制push,命令是 $ git push -f origin
如果是与人合作,用$ git revert <版本号>,现在查看log,发现多了一次commit,其内容就是回到了原来的那个阶段
分支
$ git checkout -b <branch-name> //新建+切换到改分支 $ git checkout -b <branch-name2> <branch-name1> //基于分支1新建分支2并切换 $ git branch //查看本地分支 $ git branch -r //列出远端分支 $ git branch -a //列出所有分支 $ git branch -v //查看各个分支最后一个提交对象的信息 $ git branch --merge //查看已经合并到当前分支的分支 $ git branch --no-merge //查看没有合并到当前分支的分支 $ git branch <branch-name> //新建分支 $ git checkout <branch-name> //切换分支 $ git branch -d <branch-name> //删除分支 $ git branch -D <branch-name> //强制删除分支 $ git merge <branch-name> //将<branch-name>分支合并到当前分支 $ git rebase master //将master分之上超前的提交,变基到当前分支
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
用git log --graph命令可以看到分支合并图。
分支管理策略
Git默认使用Fast forward模式,在该模式下,删除分支后,会丢弃该分支的信息;
使用--no-ff参数禁用Fast forward方式的merge,禁用后,git会在merge时生成一个新的commit,由此从该分支历史上可以看出分支信息,
使用命令
$ git merge --no-ff -m ‘描述‘ <branch-name>
完成操作;
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
标签
$ git tag //列出现有标签 $ git tag v0.1 //新建标签 $ git tag -a v0.1 -m ‘my version 1.4‘ //新建带注释标签 $ git checkout tagname //切换到标签 $ git push origin v1.5 //推送分支到源上 $ git push origin --tags //推送所有分支 $ git tag -d v0.1 //删除标签 $ git push origin :refs/tags/v0.1 //删除远程标签
多人协作的工作模式:
$ git remote -v //查看远程库详细信息 $ git pull //从远端仓库提取数据并尝试合并当前分支
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull抓取远程的新提交;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
以上是关于Git学习笔记的主要内容,如果未能解决你的问题,请参考以下文章