简介
本文讲解Tortoise git相关分支操作,在这之前我需要强调一下,在git中,每一个客户端的都有一个独立的仓库,因此要与远端同步需要进行拉取或推送的操作
创建分支
在对应的git仓库下进行分支创建
这里需要选择依据哪个分支进行创建新分支,可以依据需求选择,HEAD代表当前工作文件夹所在分支
点击确定后创建分支完成,但是会发现好像什么都没有发生,且当前依旧位于原本分支上,这时就需要用到切换分支。
切换分支
选择切换/检出。
选择需要切换的分支即可
此时你就位于该分支下了,可以通过查看日志查看当前分支
但是此时你的所有操作,其实都是还在本地进行,因此你需要将这一分支推送到远端git仓库
推送分支更新
推送可以选择将本地的所有分支进行推送,但是我的建议是每创建一个分支就先单独对该分支进行一次推送
分支更新推送完毕后,远端就会有该分支了,接下来的开发就和正常开发一样只是每次更新推送都是推送到该分支而已。
分支的合并
分支的合并其实并不难,只是需要理解一些关于git对分支处理相关的知识,理解起来就十分方便了
我将git内的分支合并分为两种类型,一种是不需要解决分支冲突的合并,一种就是需要解决分支冲突的合并
无需解决冲突的分支合并
在git中分支的创建其实是创建了一个指向对应数据版本的指针,
而你在分支上的继续开发,提交版本,其实是分支继续向后创建数据版本
假设你现在原版本master上发生bug,需要紧急修复,在原master上创建hotfix分支后,进行修复bug后提交版本,如图所示:
这时你的主要发布版本分支master需要合并到hotfix版本,由于当前 master 分支所在的提交对象要并入的 hotfix 分支是直接上游,Git 只需把master 分支指针直接右移。
换句话说,如果顺着一个分支走下去可以到达另一个分支的话,那么 Git 在合并两者时,只会简单地把指针右移,因为这种单线的历史分支不存在任何需要解决的分歧,所以这种合并过程可以称为快进
这种合并方式其实形容为版本更新可能会更好理解。
一般这时候都会手动删除掉hotfix分支,因为已修复完成bug的master已指向对应数据对象,后续会讲解删除分支的操作
需要解决冲突的分支合并
当有两个数据对象需要合并,且两者都非对方祖先关系时,可能需要进行冲突解决
合并分支的操作
这里演示冲突产生的合并操作,无产生冲突的合并操作同理
首先切换到需要合并的主分支(注:在这里其实可以理解为切换到合并后仍然要保留的分支,如前面的master 分支与hotfix 分支中就应该进入master分支,因为在进行合并后要保留的为master分支)
这里就可以进行选择从哪个分支合并到当前分支
这里就要进行分支的冲突解决操作
如果关闭了窗口,可选择解决冲突,然后双击需要编辑的文件进行冲突解决
这里就是分支冲突的编辑器,在下方文本框右击可以进行选择使用哪边的编辑文本,也可以自己进行文本编辑操作
保存选择是否已解决冲突,然后就可以进行正常的推送提交操作了
删除分支
由于本地仓库拥有的分支可以与远程仓库不一致,因此删除操作可选择删除本地分支或远程分支 依旧选择切换/检出,选择如图所示按钮
这里就是所有的本地与远程分支,右键可以进行删除分支,更新远程分支等操作
打标签(Tag)
打标签相当于制造了一个指向当前对应分支版本的一个指针,有很多情况可以用到它,比如bug处理完成后,需要删除hotfix 分支,但是又想保留一份hotfix最后版本的记录,以便后续调出查看,或者进行合并等操作
选择基与哪个分支打出Tag即可
需要注意Tag在推送到远端时需要如图勾选选项
结语
以上就是对git分支的操作总结,如需学习相关分支管理问题可参考:基于Gitflow工作流方式Tortoise(乌龟) Git 分支管理