为什么在创建新分支之前检查master?

时间:2015-01-10 14:51:11

标签: git git-checkout

我正在阅读Rails Tutorial book,并且一遍又一遍,作者要求读者运行以下两个命令:

$ git checkout master
$ git checkout -b a

我理解这些命令的作用:它们检查master分支,然后创建并签出名为a的新分支。

为什么我们需要第一行?它会有所不同,还是我可以把它留下来?

3 个答案:

答案 0 :(得分:7)

TL; DR

  

为什么我们需要第一行? [...]

这是一种稍微迂回的方式,可确保新分支a指向与master相同的提交。

更详细的答案

git checkout -b newbranch做什么

要修复想法,您可以将HEAD指针视为地铁地图上的你在这里标记,这是您的提交图。现在,执行以下命令,

git checkout -b newbranch

创建并签出一个名为newbranch的新分支,该分支指向 HEAD(直接或间接)指向的同一提交。例如,如果您的仓库看起来如下,

enter image description here

通过运行git checkout -b newbranch,您最终会得到

enter image description here

Michael Hartl带领你的地方

然而,Michael Hartl(Rails Tutorial的作者)希望您创建并签出指向特定提交的新分支 master的提示branch(即master分支指向的提交):

enter image description here

那么,为什么要先查看master

要求你运行

git checkout master

Michael Hartl只是确保你的HEAD点(间接)指向正确的提交,即master的提示:

enter image description here

然后,运行

git checkout -b newbranch

肯定会在需要的地方创建新的分支:

enter image description here

更直接的方法:两只鸟,一石......

不过,首先检查master可能看起来有点笨拙。您实际上可以将这两个命令压缩为一个:

git checkout -b newbranch master

无论你在回购地点(即HEAD指向的地方),此命令都会创建并签出一个名为newbranch的新分支,该分支指向master的顶端。

但是,因为Rails教程意味着cater for people who are new to Git,因为

git checkout -b newbranch master

更先进,可能不那么直观
git checkout master
git checkout -b newbranch

你不能真的责怪Michael Hartl推荐后者。

答案 1 :(得分:3)

分支时,从特定提交分支。检出master确保新分支从主分支的头部(最近提交)开始。

答案 2 :(得分:1)

创建分支时,将创建分支时作为开始提交创建。从主HEAD创建它是一种常见模式,但它取决于您要遵循的分支工作流程。拥有一个git工作流非常重要,项目中的所有人都遵循相同的模式,以便所有成员的可维护性和合作。检查this link以查看一些最常见的git工作流程。