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

标签 git git-checkout

我正在阅读 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(直接或间接)指向 的同一提交。例如,如果您的存储库如下所示,

enter image description here

通过运行git checkout -b newbranch,你会得到

enter image description here

Michael Hartl 带你去的地方

但是,Michael Hartl(Rails Tutorial 的作者)希望您创建并 check out 一个新的分支指向一个特定的提交:您的master 分支(即 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

更直接的方法:两只鸟,一 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/

相关文章:

html - 为什么我在 GitHub Page 上的 Hugo 主题主机丢失了 css 样式?

git - 是否有用于在机器之间共享更改的 git 个人服务器?

git - Qt Creator Git, checkout 命令

git - 无法 checkout 分支或删除有问题的文件

git - Maven 版本 :prepare-with-pom removes release-pom then tries to add it?

git - 身份验证失败 Github 桌面

Git checkout 'virtual'分支

Git:无法撤消本地更改(错误:路径...未 merge )

git - .gitignore 和删除缓存使得我看不到服务器上的文件?

git - 当 git clone --depth 1 不起作用时 checkout 分支