我正在阅读 Rails Tutorial book而且,作者一遍又一遍地要求读者运行以下两个命令:
$ git checkout master
$ git checkout -b a
我理解这些命令的作用:它们 check out master
分支,然后创建并 check out 一个名为 a
的新分支。
为什么我们需要第一行?它有什么不同吗,还是我可以忽略它?
最佳答案
长话短说
Why do we need the first line at all? [...]
这是确保新分支 a
指向与 master
相同的提交的一种稍微迂回的方式。
更详细的回答
git checkout -b newbranch
做什么
要修复想法,您可以将 HEAD
指针视为地铁 map 上的 You-are-here 标记,即您的提交图。现在,以下命令,
git checkout -b newbranch
创建并 checkout 一个名为 newbranch
的新分支,该分支指向 HEAD
(直接或间接)指向 的同一提交。例如,如果您的存储库如下所示,
通过运行git checkout -b newbranch
,你会得到
Michael Hartl 带你去的地方
但是,Michael Hartl(Rails Tutorial 的作者)希望您创建并 check out 一个新的分支指向一个特定的提交:您的master
分支(即 master
分支指向的提交):
那么,为什么要先查看 master
?
让你运行
git checkout master
Michael Hartl 只是确保您的 HEAD
指向(间接)正确的提交,即 master
的提示:
然后,运行
git checkout -b newbranch
肯定会在需要的地方创建新分支:
更直接的方法:两只鸟,一 block 石头......
不过,必须首先检查 master
似乎有点笨拙。您实际上可以将这两个命令压缩为一个:
git checkout -b newbranch master
无论您在存储库中的哪个位置(即 HEAD
指向的位置),此命令都将创建并 check out 一个名为 newbranch
的新分支,该分支指向大师
。
但是,因为 Rails 教程是为了 cater for people who are new to Git , 因为
git checkout -b newbranch master
比
更先进一些,也许更不直观git checkout master
git checkout -b newbranch
你真的不能责怪 Michael Hartl 推荐了后者。
关于git - 为什么要在创建新分支之前检查 master?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27877493/