1

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

如何git commit工作,移动HEAD 到新创建的提交,但不推进分支

(因此:离开foo点到123abc

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

4

3 回答 3

3

只需分离,然后提交:

git checkout --detach
git commit -m "Commit as usual"
于 2020-04-28T08:24:21.967 回答
1

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

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

于 2020-04-28T08:24:40.947 回答
0

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

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

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

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

于 2020-04-28T08:21:10.737 回答