git checkout 提交名称 和 git checkout 分支名称 有什么区别

M H*_*ari 2 git gitlab

如果我们签出提交名称而不是分支名称会发生​​什么?

Ran*_*ght 5

我不同意那些说“它们是相同的”或“不会发生任何不好的事情”的答案。

它们在一个重要方面截然不同。antak在一篇文章中正确地描述了它,但我想强调潜在的危险,即你可能会失去对新提交的跟踪。

如果按分支签出,那么分支指针会指向该提交,下次提交时,会添加新的提交,分支指针也会随之移动。这通常是人们希望发生的事情。

如果您只是通过提交签出,然后进行新的提交,则没有指向该新提交的分支。只有 HEAD 指向它。

如果您此时要签出其他某个分支,您可能会失去对新提交的跟踪。(如果您不了解诸如引用日志之类的特殊内容,您就会失去对它的跟踪)。

正如 antak 指出的那样,您可以进行新的提交,然后在此时创建一​​个分支,但是如果您不知道原始问题的答案,那么您可能不知道该怎么做,对吧?

简而言之:您通常想要签出该分支,除非您有特殊原因不这样做。