Ben*_*all 2 git git-reset git-worktree
我注意到,如果我尝试git reset使用辅助工作树,它会根据主要工作树进行重置。
假设我在我的普通仓库中检出了master (d),并且在我的单独工作树中有功能 (f)。如果我这样做,git reset --hard head~1我最终会得到c而不是我所期望的e:
master _______a______c__d
feature \__b________e__f
Run Code Online (Sandbox Code Playgroud)
我试过寻找如何在工作树中正确重置,但一直找不到任何东西。
这里的诀窍是您使用的是大小写折叠系统(典型的 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;等等。