git相关(3)-分支与合并
git分支
git分支是git的一大特性,git 的分支本质上仅仅是指向提交对象的可变指针,是包含所指对象校验和(长度为 40 的 SHA-1 值字符串)的文件,这也是为什么git分支的创建和销毁都异常高效的原因,创建新分支时,就是在当前所在的提交对象上创建一个指针,而git是通过一个名为HEAD的特殊指针来记录自己的当前位置的。
与git分支相关的命令有:
1 | git branch -- 查看本地分支 |
分支切换
注意在切换分支时,git会重置工作目录,自动添加、删除、修改文件以确保此时你的工作目录和这个分支最后一次提交时的样子一模一样,因此在切换分支前,要注意暂存当前的工作进度,可以使用git stash
命令暂存当前工作。
分支合并
在合并时,可能会看到fast-forward这个词,这是指当前分支是合并分支的直接上游,两者合并不会产生冲突,而只是指针向前移动了,所以叫做fast-forward。
如果两个分支已经分叉开来,进行合并时,git会根据两个分支的共同祖先来做一个三方合并,此时的合并就不是简单的指针向前移动了,而是将三方合并的结果生成一个新的快照并创建一个新的提交指向它。
有时候合并会发生冲突,靠git自动合并已经无法解决,就需要人工去解决冲突,git会在有冲突的文件中加入标记,使用<<<<<<<
和>>>>>>>
、=======
标识了冲突的位置,=======
将两个分支的冲突位置内容分隔开来,为了解决冲突,只能选择其中一个,手动地将标识的片段改为你选择的内容即可,修改完冲突之后,还要使用git add
来表示冲突已经解决,git commit
来完成合并提交。
远程分支
远程分支以 (remote)/(branch)
形式命名,本地分支与远程分支交互相关的命令如下:
1 | git push (remote) (branch):(remote branch) --推从到远程分支 |
git相关(3)-分支与合并
install_url
to use ShareThis. Please set it in _config.yml
.