如何 git- 从分支提交到分离的 HEAD?
How to git-commit from a branch to a detached HEAD?
我的 ref HEAD
指向分支 foo
,指向提交 123abc
;我有一些分阶段的工作。
如何 git commit
将 HEAD
移动到新创建的提交,但 不推进分支 ?
(因此:离开 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 状态,而不是 foo
。 git commit
将创建一个新提交并将 HEAD
移动到新提交,留下 foo
不变。
如果 HEAD
指向 refs/heads/foo
并且 refs/heads/foo
指向 123abc
,您可以 运行 git checkout 123abc
然后进行提交。
我的 ref HEAD
指向分支 foo
,指向提交 123abc
;我有一些分阶段的工作。
如何 git commit
将 HEAD
移动到新创建的提交,但 不推进分支 ?
(因此:离开 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 状态,而不是 foo
。 git commit
将创建一个新提交并将 HEAD
移动到新提交,留下 foo
不变。
如果 HEAD
指向 refs/heads/foo
并且 refs/heads/foo
指向 123abc
,您可以 运行 git checkout 123abc
然后进行提交。