我注意到,如果我尝试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