我的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 移回一个提交是您会做的事情。