2

我注意到,如果我尝试git reset在辅助工作树上进行操作,它会根据工作树进行重置。

假设我有master (d)在我的正常 repo 中签出,并且在我的单独工作树中有功能 (f) 。如果我这样做了,我会git reset --hard head~1c而不是e结束,正如我所期望的:

master   _______a______c__d
feature          \__b________e__f

我尝试寻找如何在工作树中正确重置,但一直找不到任何东西。

4

2 回答 2

5

这里的诀窍是您使用的是大小写折叠系统(典型的 MacOS 或 Windows 设置,但不适用于 Linux 设置)并且您使用head(小写)而不是HEAD(全部大写)。

当您在存储库的主工作树中执行此操作时,它仍然可以工作。但是当您在添加的工作树中执行此操作时,它会失败:head解析到工作树中分支的尖端提交,而不是当前工作树中分支的尖端。例如,如果您在工作树中工作,feature而主工作树已master签出,HEAD~1则表示feature~1head~1表示master~1.

如果您不喜欢HEAD全部输入大写字母,您可以使用您会使用的@符号HEAD。例如,与 ;@~1的含义相同HEAD~1。与;git reset --hard @的意思相同 git reset --hard等等。

于 2020-06-10T15:25:45.483 回答
1

使用分支的名称似乎符合我的预期:git reset --hard feature~1

于 2020-06-08T13:00:08.700 回答