如何在工作树中“git reset”?

How do I `git reset` in a worktree?

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

假设我已经 master (d) 在我的正常回购中签出,并且在我单独的工作树中有 feature (f)。如果我这样做 git reset --hard head~1 我最终会在 c 而不是我期望的 e:

master   _______a______c__d
feature          \__b________e__f

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

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

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

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

如果您不喜欢输入全部大写的 HEAD,您可以在本应使用 HEAD 的地方使用 @ 符号。例如,@~1HEAD~1 意思相同; git reset --hard @git reset --hard 意思相同;等等。