My ref HEAD
指向分支foo
,它指向提交123abc
;而且我有一些上演的工作。
如何git commit
起作用,将HEAD
移动到新创建的提交,但是不推进分支?
(因此:将foo
指向123abc
)
是否可以使用单个git
命令来完成?
简单地分离,然后提交:
git checkout --detach
git commit -m "Commit as usual"
如果HEAD
直接指向提交123abc
,则它已经处于分离的HEAD状态,而不是在foo
上。 git commit
将创建一个新的提交,并将HEAD
移至新的提交,而foo
保持不变。
如果HEAD
指向refs/heads/foo
,refs/heads/foo
指向123abc
,则可以运行git checkout 123abc
,然后进行提交。
您可以先提交,然后进行重置:
# from foo branch
git commit -m 'your work here'
git reset --soft HEAD~1
这会将HEAD指针移回一个提交到123abc
,但也会分阶段执行该提交中的所有工作。
还有其他类型的重置(混合重置,硬重置),它们是上述内容的变体。在不知道最终目标的情况下,不清楚应该使用哪种重置。但是,总的来说,如果要重写先前的HEAD提交,则可以将HEAD移回一个提交。