git - 为什么 Mac OS 的 SourceTree 不允许我以相同的方式分支两次?

标签 git branch

我是 Git 的新手,我正在使用 Mac OS 的 SourceTree,并且有一个关于分支的问题。这是一个非常小的项目,也是我第一次使用版本控制。到目前为止,我对它只有一个非常基本的了解。我通过单击“分支”从我的第二次提交创建一个分支而创建的第一个分支,并且工作正常。然而,我第二次创建分支是在第一次提交之后,SourceTree 不允许我以同样的方式进行。我不得不使用 Checkout 而不是 Branch,它创建了一个分离的头部,然后我不得不命名新分支。我想知道为什么它不允许我以同样的方式创建我的分支。谢谢!

最佳答案

如果您的 master 分支有 2 个提交,并且您从第二个提交创建了第一个分支,您的 HEAD 指向与 master 分支相同的提交,分支命令将从那里开始。

如果你想以第一次提交为起点创建第二个分支,你别无选择首先通过检查它来移动你的 HEAD 在第一次提交上(结果是你的 HEAD 将从 master 分支分离因为它指向不同的提交)。当您的 HEAD 指向适当的提交时,您可以继续创建分支,这个新分支将从第一个提交开始。

这两种情况下创建分支的过程是一样的,唯一的区别是第一次你的起点是master分支的最后一次提交并且你的HEAD是附加到这个分支上的(也就是说HEAD和master指向相同的提交)。在第二个过程中,您想要从不同的提交开始一个分支,这只需要将您的 HEAD 移动到另一个提交上,结果由一个分离的 HEAD 指示。

希望这能帮助你更好地理解 git 背后的逻辑。

如果您想进一步了解 git,请查看本教程:Learn git branching

本教程真的很棒,将帮助您更好地理解 git 背后最重要的机制。

关于git - 为什么 Mac OS 的 SourceTree 不允许我以相同的方式分支两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12327973/

相关文章:

mercurial - 尝试在 Mercurial 中从分支 merge 回主分支并关闭分支

git - 如何返回一些提交,但仍然在 git 中保留提交历史?

git - 从存储库中删除忽略的文件

android - 下载联系人应用程序的 Android 代码

svn - 如何将具有历史记录的 SVN 存储库迁移到新的 Git 存储库?

git 在多个分支之间暂存和提交

Mercurial:如何创建计划外的分支

混帐 svn : how do I work with "partial" branches?

git - git branch -m 对其他开发人员有副作用吗?

mercurial - 在Mercurial退出后,如何判断是否需要 merge ?