我注意到,如果我尝试在辅助工作树上 git reset
,它会根据主要工作树进行重置。
假设我在我的正常存储库中检查了 master (d),并且在我单独的工作树中有 feature (f)。如果我执行 git reset --hard head~1
我最终会在 c 而不是我期望的 e :
master _______a______c__d
feature \__b________e__f
我尝试寻找如何在工作树中正确重置,但一直找不到任何东西。
最佳答案
这里的技巧是你在一个大小写折叠系统上(典型的 MacOS 或 Windows 设置,但不是 Linux 设置)并且你使用 head
(小写)而不是 HEAD
(全部大写)。
当您在存储库的主工作树中执行此操作时,它无论如何都可以工作。但是,当您在添加的工作树中执行此操作时,它会失败:head
解析为 main 工作树中分支的尖端提交,而不是尖端提交当前工作树中的分支。例如,如果您在工作树中处理feature
,而主工作树已 check out master
,则HEAD~1
表示feature~1
但 head~1
表示 master~1
。
如果您不喜欢全部大写输入 HEAD
,您可以在本应使用 HEAD
的地方使用 @
符号。例如,@~1
与HEAD~1
的含义相同; git reset --hard @
和 git reset --hard
意思一样;等等。
关于git - 我如何在工作树中找到 `git reset`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62262199/