我正在 git 的一个分支上工作。

git checkout <commit id>

(提交 ID 获取自git log),它正在致力于该特定更改,但分支更改为<No-branch>

为什么会发生这种情况?

答案

如果你checkout直接提交 sha,它会让您进入"分离头"状态,这基本上意味着您的工作副本已签出的当前 sha 没有指向它的分支。

如果您尚未进行任何提交,则只需在检查提交 sha 之前检查您所在的分支即可保持分离的头状态:

git checkout <branch>

如果您在处于分离头状态时确实进行了提交,则只需在离开分离头状态之前或同时附加一个分支即可保存您的工作:

# Checkout a new branch at current detached head state:
git checkout -b newBranch

您可以阅读更多有关分离头状态可在官方 Linux 内核 Git 文档中查看

来自: stackoverflow.com