我注意到,如果我尝试git reset
在辅助工作树上进行操作,它会根据主工作树进行重置。
假设我有master (d)在我的正常 repo 中签出,并且在我的单独工作树中有功能 (f) 。如果我这样做了,我会git reset --hard head~1
以c而不是e结束,正如我所期望的:
master _______a______c__d
feature \__b________e__f
我尝试寻找如何在工作树中正确重置,但一直找不到任何东西。
我注意到,如果我尝试git reset
在辅助工作树上进行操作,它会根据主工作树进行重置。
假设我有master (d)在我的正常 repo 中签出,并且在我的单独工作树中有功能 (f) 。如果我这样做了,我会git reset --hard head~1
以c而不是e结束,正如我所期望的:
master _______a______c__d
feature \__b________e__f
我尝试寻找如何在工作树中正确重置,但一直找不到任何东西。
这里的诀窍是您使用的是大小写折叠系统(典型的 MacOS 或 Windows 设置,但不适用于 Linux 设置)并且您使用head
(小写)而不是HEAD
(全部大写)。
当您在存储库的主工作树中执行此操作时,它仍然可以工作。但是当您在添加的工作树中执行此操作时,它会失败:head
解析到主工作树中分支的尖端提交,而不是当前工作树中分支的尖端。例如,如果您在工作树中工作,feature
而主工作树已master
签出,HEAD~1
则表示feature~1
但head~1
表示master~1
.
如果您不喜欢HEAD
全部输入大写字母,您可以使用您会使用的@
符号HEAD
。例如,与 ;@~1
的含义相同HEAD~1
。与;git reset --hard @
的意思相同 git reset --hard
等等。
使用分支的名称似乎符合我的预期:git reset --hard feature~1