Git是当前应用最广泛的版本控制系统之一,是每个开发人员都要了解的重要工具。
它与其他版本控制系统相比,最大的好处之一是它的分支功能。
Git分支是版本控制工作流的基本,又是重中之重。
这篇小短文将讨论如何创建、删除、合并和重新设置Git分支,我们可以从以下几个环节来补充Git知识。

什么是分支?
想用一个工具,我们就要先了解这个工具。
假设我们正在跟团队一起处理一个项目,并且我正在创建一个需要对代码库进行大量更改的新功能/模块。
在这个过程中,您发现了一个需要修复的bug。
这个bug与我的新功能有关,但我不想影响你的代码。这种情况可能会变得复杂。我要怎么把当前正在处理的代码隔离开?
这就是Git分支的来源。
分支是源代码管理的一个核心概念,它允许我们将工作划分为不同的分支,这样我们就可以自由地处理源代码,而不会影响其他人的工作或主分支中的实际代码。
对于Git,我们可以从一个名为master的主分支开始。Git允许我们创建任意数量的分支。
注意:不必总是从主分支创建分支。我们可以从任何其他分支创建新分支。
在单独的分支中,我们可以在不直接影响源代码的情况下进行实验和测试。分支允许我和团队在上下文之间切换,而不用担心影响不同的分支。
对于团队来说,它是一个很好的工具,因为它使协作更容易、更方便、更灵活。
注意:Git分支不同于SVN分支。Git分支在您的日常工作流程中非常有用,而SVN分支则用于大规模的开发工作。
创建分支
本地分支
本地分支只能在我们本机设备上访问。
但在将分支推送到远程存储库之前,我们需要先创建本地分支,如果分支已经存在,我们可以直接切换:
git checkout <name>
如果本地分支还不存在,我们需要先进行创建,并切换到该分支:
git checkout -b <name>
通过这个步骤,我们知道了如何创建一个新的本地分支,接下来让我们看看如何创建一个远程分支。
远程分支
我们需要将本地分支推送到远端,进行绑定,从而成为一个远程分支。
当分支是远程的时候,这意味着任何可以访问远程存储库的人现在都可以访问远程分支,并在上面进行相关的操作,比如pull、push等。
git push -u origin <name>
删除分支
我们了解到了如何去创建一个本地分支和远端分支,并且进行绑定,从而在新的分支上实现我们的代码和协同开发。
当这个分支的工作完成之后,我们一般是需要删除该分支,比如说某个hotfix(bug修复)的分支,在完成代码修复、测试、合并工作后,这个分支一般是需要被删除的。
本地分支
基于该命令,我们可以对本地分支进行删除:
git branch -d <name>
有时候,Git会拒绝我们的删除分支命令。
比如说你的分支还存在没有合并到其他分支上的提交,或者还没推送到远端上的提交,这时候Git为了保护我们不会被意外丢失数据,会拒绝我们的删除分支请求。
如果我们已经确定该分支是可以被删除的状态,那么我们可以通过这个标记来进行(-D),该标记将进行强制删除操作:
git branch -D <name>
远端分支
在删除了本地分支之后,我们需要把远端上的分支也进行一个删除,不然我们也只是删除了自己设备上的分支罢了,其他人还可以对分支进行操作。
删除的方式则是通过push的方式,将delete推送给远端Git,进行对应分支的删除:
git push origin --delete <name>
合并分支
Git合并是分支的基本功能。
合并允许我们通过提交,来为两个或多个分支创建连接,且只会对目标分支进行更改。
比如说,master分支是这个目标分支。它将保留合并分支的历史的提交记录。
让我们回顾下一开始的例子,我们正在开发某个新功能,此时为了修复某个问题,我们创建了一个新的分支。
在这个分支上,我们进行了问题修复和测试,当我们完成了之后,我们希望把这个修复合并到主分支上,从而后续的版本发布我们都能够保证问题是已经被修复的状态。
那么在合并的时候,我们需要先对该分支和主分支都进行更新,要保证本地分支与远端是同步的:
git pull
随后,进入我们要合并过去的目标分支(比如是master):
git checkout master
将分支的提交合并到master分支上(比如该分支是hotfix-whatwhatwhat)
git merge hotfix-whatwhatwhat
合并完成后,您可以在本地master分支,检查项目的提交历史,从而验证合并是成功的。
如果合并成功并且hotfix-whatwhatwhat的工作已经完成,那么可以删除该分支分支,因为所有更改现在都集成到目标分支中。
最后,我们需要把合并后的本地master,推送到远端上,让合并真正生效并且存储在远端环境里:
git push
这个例子中我们用了master,但实际上master一般作为一个保护分支,是不允许被直接提交和推送的,这种情况,我们可以会去到对应的git管理页面(比如gitlab或者github),通过创建MR的方式,来创建合并请求,并在通过人工审核后进行合并。这样就少了需要在本地进行本地分支合并的过程。
分支Rebase(变基)
git rebase——变基——是Git中的一个高级概念。
这看起来有点复杂,变基和合并是非常相似的。这两个命令都是从一个分支获取提交并将它们放到另一个分支上。
它们最主要区别在于,合并是将提交叠加在本地的提交之后,而变基则是将分支的初始提交记录进行变更。
比如feature分支从master分支拉出来的时候,是从提交记录A处拉取的,在feature开发的过程中,master的head从提交记录A变到了B,那么通过rebase,我们可以将feature的初始提交记录从A变到B,而合并则是,将master的新变化合并到feature,并且会形成一个新的merge提交记录。
我们简单地介绍下这个命令,但这个命令不是适用于任何场景:
git checkout feature-xx
git rebase master
祝贺!
我们在使用Git分支上迈出了第一步!
想要非常熟练地使用Git来进行版本控制,实际上也是需要付出一定的心血去学习和实践的。
通过日积月累的知识储备,到最后,Git在你的整个职业生涯中为您提供非常优秀的体验和服务。
谢谢大佬们的评论、点赞和转发[耶]
关注居家程序员,时不时更新技术“硬”文和代码生活小乐趣