做为TortoiseGit的用户,在处理远程分支时,我老是有点困惑。与许多未分发的版本控制系统相比,Git使分支机构的工做变得很是简单快捷,可是来自TFS或SubVersion的世界,其中分支基本上是一个物理目录,能够在Git中签入和签出它几乎只是一个指针。这意味着每一个存储库和工做流的分支对于将本地分支推送到远程存储库时是惟一的,或者相反,有点不一样。安全
使用控制台处理分支的文档很是好,可是当我使用TortoiseGit时,我常常在处理远程分支时感到困惑和不安全。所以我决定进行一些研究和实验,并记录彷佛有效的工做流程。服务器
建立本地分支
鉴于咱们已经建立了一个本地存储库并添加了一个远程存储库,在个人状况下是一个GitHub存储库,咱们能够经过右键单击存储库中的目录并选择Create Branch菜单项来建立本地分支。fetch
而后,咱们进入Create Branch对话框,在其中输入分支的名称并单击OK。网站
除非咱们没有在Create Branch对话框中选中“切换到新分支”复选框,不然咱们的工做目录仍然是主分支。要切换到新建立的分支,咱们右键单击并选择Switch / Checkout菜单项。spa
在下面的对话框中,咱们选择新建立的本地分支并单击OK。3d
咱们的工做目录如今是新建立的分支(在个人例子中是“branch1”)。咱们如今能够进行一些更改并将它们提交到本地分支。这反映在TortoiseGit右键菜单中的Commit菜单项中。版本控制
将本地分支推送到新的远程分支(在GitHub上)
当咱们想要与其余人共享咱们的本地分支,或者将其存储在远程存储库中以备份它或者可以从咱们须要推送的另外一台计算机中检索它时。对我而言,这有点使人困惑,由于推送它并不意味着将实际分支推送到远程存储库,而是在远程存储库中建立新分支并推送更改。为此,咱们使用Push右键单击菜单选项,就像咱们在master分支中工做同样。指针
在下面的Push对话框中,咱们只需点击OK便可。
这是让我最困惑的部分之一。我一直想知道这是否意味着本地分支中的更改不会被推送到远程存储库中的主分支。可是击中后肯定看着Git的命令进度对话框中咱们能够看到,TortoiseGit推进本地分行的一个分支,在它还不存在,这将随后被建立的远程存储库相同的名称。
将分支推送到GitHub后(若是这是咱们的远程存储库所在的位置),咱们能够看到它并使用页面右侧的分支按钮切换到它。
在进行了一些咱们已经提交给本地分支的更改以后,咱们可使用相同的工做流将它们推送到相应的远程分支。
正如咱们在“命令进度”对话框中看到的那样,本地分支中的更改将被推送到相应的远程分支。
获取远程分支
当其余人想从远程存储库中获取新分支时,咱们本身切换到另外一台计算机或本地存储库后,须要从远程存储库中获取新分支。有人可能认为这涉及首先建立一个新的本地分支,而后从远程分支拉出,但根据个人研究,这不是一个好主意。相反,咱们想要作的是基于远程分支建立一个新的本地分支。咱们首先选择Create Branch右键菜单选项来完成此操做。
在Create Branch对话框中,咱们能够根据须要命名咱们的新分支,但为了不混淆,咱们极可能但愿为它指定与远程分支相同的名称。而后诀窍是检查Base on / Branch单选按钮并选择远程分支。
点击OK后,咱们获得一个确认信息,即已建立新的本地分支而且它跟踪远程分支。就像以前咱们还须要检查“切换到新分支”复选框或手动签出新分支以便开始工做。
在将更改提交到本地分支后,咱们可使用“推送”右键单击菜单选项将更改推送到远程分支。可是,咱们须要确保在“推送”对话框的“远程”下拉列表中选择了正确的分支。
合并
一旦咱们想要将分支中的更改合并到主分支中,咱们使用Checkout / Switch右键单击菜单选项检出主分支。
而后咱们使用Merge右键菜单选项...
...打开咱们选择从本地分支合并的Merge对话框。
完成合并后,咱们能够将更改(合并)从本地主服务器推送到远程主服务器分支。
而后远程存储库将弄清楚发生了什么,若是咱们查看GitHub中的Network选项卡,它将显示为咱们一直在使用的分支从未存在(或多或少)。
删除本地分支
若是咱们在将它合并到master以后完成了咱们的分支,或者因为其余缘由咱们想要丢弃分支,咱们能够经过首先打开Checkout / Switch对话框来获取Browse refs对话框来删除本地分支。
在Browse refs对话框中,咱们能够右键单击本地分支并选择删除它。
删除远程分支
要删除远程分支,咱们能够作一样的事情,但不是右键单击咱们的本地分支,而是在对话框左侧展开远程树,而后找到远程分支。
放弃
我不是Git的专家(虽然我但愿有一天)因此若是你在这篇文章中看到错误,请不要犹豫,让我知道!不过,这个工做流程彷佛对我有用。
PS。有关新帖子的更新,我发现有用的网站以及偶尔的咆哮,您能够在Twitter上关注我。您也能够订阅RSS-feed。