Git是Linux创始人Linus用C语言写的分布式版本控制系统
而且有一个HEAD指针,指针指向的是最近一次的提交,每次提交都有一个commitID,我在这个栏目的其他有讲到这些。
一次提交我们可以认为是一次快照,我们可以用git reset --hard commitID到达某次提交后的状态
分支作用
master是主分支,我们在进行自己的工作的时,一般不在主分支上面进行提交,而是自己创建自己的分支,然后做完了归并到主分支上面去,分支合并会有冲突问题,这也是需要解决的
创建分支
创建并且移动到那个分支
git checkout -b dev = git branch dev ;git checkout dev
然后就可以在这个分支上进行修改,push,pull
也可以切换到原来的分支:git checkout master
查看分支列表
git branch
加*的就是当前处在的分支
合并分支
将dev分支合并到master分支
git merge dev
当两个分支有相同的文件,而且改动不一样,会产生冲突
删除分支
git branch -d dev
如果分支没有合并过,删除会失败,这时候需要强制删除
git branch -D dev
解决分支合并的冲突
发生冲突的时候合并会失败,并且无法用快速合并
我们需要手动更改冲突文件的内容在进行合并分支
查看合并图
git log --graph --pretty=oneline --abbrev-commit
分支合并的模式
Fast-forward:快速模式,合并后不能看出有分支合并的历史,也就是说看不出有进行过分支合并
git --no-ff -m "description" dev:普通模式的分支合并
第二种方式分支合并会形成一个commit记录,也就会有相应ID,而第一种没有
拉取远程仓库
你的本地仓库已经和远程仓库连接,然后有别人比如同事push了一次,你又push一次,然而你的push和同事的push有冲突,那么你的push就会失败,远程仓库与你的本地仓库不一致,这时候需要git pull,在pull之前先把本地的一个分支与远程仓库的分支进行关联,git branch --set-upstream-to=origin/dev dev或者git branch --set-upstream dev origin/dev,然后再git pull,最后再本地合并,手动解决冲突,最后推送