我的ref HEAD
指向分支foo
,指向提交123abc
;我有一些分阶段的工作。
如何git commit
工作,移动HEAD
到新创建的提交,但不推进分支?
(因此:离开foo
点到123abc
)
是否可以使用单个git
命令来完成?
我的ref HEAD
指向分支foo
,指向提交123abc
;我有一些分阶段的工作。
如何git commit
工作,移动HEAD
到新创建的提交,但不推进分支?
(因此:离开foo
点到123abc
)
是否可以使用单个git
命令来完成?
只需分离,然后提交:
git checkout --detach
git commit -m "Commit as usual"
如果HEAD
直接指向 commit 123abc
,则它已经处于分离 HEAD 状态而不是 on 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 移回一个提交是您会做的事情。