如何 git- 从分支提交到分离的 HEAD?

How to git-commit from a branch to a detached HEAD?

我的 ref HEAD 指向分支 foo,指向提交 123abc;我有一些分阶段的工作。

如何 git commitHEAD 移动到新创建的提交,但 不推进分支

(因此:离开 foo 指向 123abc

是否可以用一个 git 命令来完成?

您可以提交然后进行重置:

# from foo branch
git commit -m 'your work here'
git reset --soft HEAD~1

这会将 HEAD 指针移回一次提交到 123abc,但也会暂存该提交中的所有工作。

还有其他类型的重置(混合、硬重置),它们执行上述操作的变体。在不知道您的最终目标的情况下,不清楚您应该使用哪种重置方式。不过,一般来说,如果您想重写之前的 HEAD 提交,将 HEAD 移回一次提交是您会做的事情。

简单地分离,然后提交:

git checkout --detach
git commit -m "Commit as usual"

如果 HEAD 直接指向提交 123abc,它已经处于分离的 HEAD 状态,而不是 foogit commit 将创建一个新提交并将 HEAD 移动到新提交,留下 foo 不变。

如果 HEAD 指向 refs/heads/foo 并且 refs/heads/foo 指向 123abc,您可以 运行 git checkout 123abc 然后进行提交。