我正在阅读Rails Tutorial book,并且一遍又一遍,作者要求读者运行以下两个命令:
$ git checkout master
$ git checkout -b a
我理解这些命令的作用:它们检查master
分支,然后创建并签出名为a
的新分支。
为什么我们需要第一行?它会有所不同,还是我可以把它留下来?
答案 0 :(得分:7)
为什么我们需要第一行? [...]
这是一种稍微迂回的方式,可确保新分支a
指向与master
相同的提交。
git checkout -b newbranch
做什么要修复想法,您可以将HEAD
指针视为地铁地图上的你在这里标记,这是您的提交图。现在,执行以下命令,
git checkout -b newbranch
创建并签出一个名为newbranch
的新分支,该分支指向 HEAD
(直接或间接)指向的同一提交。例如,如果您的仓库看起来如下,
通过运行git checkout -b newbranch
,您最终会得到
然而,Michael Hartl(Rails Tutorial的作者)希望您创建并签出指向特定提交的新分支 :master
的提示branch(即master
分支指向的提交):
master
?要求你运行
git checkout master
Michael Hartl只是确保你的HEAD
点(间接)指向正确的提交,即master
的提示:
然后,运行
git checkout -b newbranch
肯定会在需要的地方创建新的分支:
不过,首先检查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工作流程。