提交指定分支代码(创建一个本地分支)
提交指定分支代码(创建一个本地分支)合并后如果你不想要testing分支,可以将该分支进行删除% git merge testing 复制代码此命令会将testing分支合并到当前分支中,我目前的分支是master,合并后两个分支的代码就到一起了,后续就可以基于master进行push或者继续提交代码。当我们针对master分支和testing分支分别做修改,看看分支份分叉会变成什么样可以看到两个分支从一开始的位置走上了不同的道路假如testing分支是你同事的分支,现在需要合到master分支然后push到远程分支,那就需要使用merge命令进行合并
Git branch 分支名
复制代码
通过git branch 命令就可以快速创建一个本地分支,这个分支会基于当前提交对象创建一个指针。而这个命令只会创建一个分支,并不会自动切换到新分支中,本例中我们是处于master分支中。
HEAD相当于一个标识,用来指向当前所在的分支
分支切换要想切换分支,就需要使用gIt checkout命令
//切换分支
% git checkout testing
//查看分支
% git branch -a
master
* testing
复制代码
此时HEAD就指向testing分支了
当我们针对master分支和testing分支分别做修改,看看分支份分叉会变成什么样
可以看到两个分支从一开始的位置走上了不同的道路
合并分支假如testing分支是你同事的分支,现在需要合到master分支然后push到远程分支,那就需要使用merge命令进行合并
% git merge testing
复制代码
此命令会将testing分支合并到当前分支中,我目前的分支是master,合并后两个分支的代码就到一起了,后续就可以基于master进行push或者继续提交代码。
合并后如果你不想要testing分支,可以将该分支进行删除
删除分支git branch -d testing
复制代码
分支冲突时如何合并
假如你有两个分支都对同一个文件进行了修改,当你将其中一个分支合并到另一个分支就会出现冲突
% git merge testing
Auto-merging test.md
CONFLICT (content): Merge conflict in test.md
复制代码
因为testing分支和master分支都对test.md文件做了修改,当将testing分支合并到master分支时就会出现冲突
任何因包含合并冲突而有待解决的文件,都会以未合并状态标识出来。 Git 会在有冲突的文件中加入标准的冲突解决标记,这样你可以打开这些包含冲突的文件然后手动解决冲突。 出现冲突的文件会包含一些特殊区段,看起来像下面这个样子:
sssssTEST
<<<<<<< HEAD
ssss
ssssssssasasa
=======
sss
ssssss
>>>>>>> testing
复制代码
这表示 HEAD 所指示的版本(也就是你的 master 分支所在的位置,因为你在运行 merge 命令的时候已经检出到了这个分支)在这个区段的上半部分(======= 的上半部分),而 testing 分支所指示的版本在 ======= 的下半部分。 为了解决冲突,你必须选择使用由 ======= 分割的两部分中的一个,或者你也可以自行合并这些内容。 例如,你可以通过把这段内容换成下面的样子来解决冲突:
sssssTEST
ssss
ssssssssasasa
ssssss
复制代码
在你解决了所有文件里的冲突之后,对每个文件使用 git add 命令来将其标记为冲突已解决。 一旦暂存这些原本有冲突的文件,Git 就会将它们标记为冲突已解决。
分支的管理查看所有分支
% git branch
* master
test
复制代码
会显示出所有分支,*号代表现在检出的那一个分支(也就是说,当前 HEAD 指针所指向的分支)。
查看每一个分支最后提交
% git branch -v
* master bc5b518 [ahead 5] sss
test 1be830c ss
复制代码
查看所有本地分支对应跟踪的远程分支
% git branch -vv
master d230c50 [origin/master: ahead 6] ss
* test 1be830c ss
复制代码
此时可以看到,master对应的远程分支是origin/master,test还没有和远程分支建立关联
设置已有的本地分支跟踪一个远程分支% git branch -u origin/master
% git branch -vv
master d230c50 [origin/master: ahead 6] ss
* test 1be830c [origin/master] ss
复制代码
该命令会将当前所使用的本地分支与一个远程分支建立映射关系,当然此命令也可以作为修改对应的远程分支
删除远程分支% git push origin --delete 远程分支名
复制代码