git - 我如何在工作树中找到 `git reset`?

标签 git git-reset git-worktree

我注意到,如果我尝试在辅助工作树上 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~1head~1 表示 master~1

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

关于git - 我如何在工作树中找到 `git reset`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62262199/

相关文章:

git - git reset 后无法推送 --soft HEAD^

git - 通用 git 重置为默认上游 HEAD

git - "git worktree"分支的长期使用

git - git 可以在 "silent mode"运行吗?

git - 为什么 git amend 在没有什么要修改的时候不警告你?

git - 将整个分支重置/恢复到另一个分支状态?

git checkout -f master VS git reset

git - "git config core.worktree"是什么意思?

Git - 裸仓库不能有主分支的工作树 - 为什么?

git - 显示最后的 git commit 评论