签出提交而不更新 HEAD

Max*_*kyi 6 git

我需要将工作目录和索引更新为某些提交的状态。当我运行git checkoutGit 更新时HEADindex会出现working directory. 我知道我可以从提交中签出单个文件而无需更新HEAD我知道我可以通过简单地指定文件的路径但是对整个工作目录执行此操作的最佳方法是什么?

目前我只是在做:

ID=$(git rev-parse HEAD)
git reset --hard COMMIT_ID
git reset --soft $ID
Run Code Online (Sandbox Code Playgroud)

Fer*_*big 11

git checkoutdot作为路径

\n\n
git checkout COMMIT_ID .\n
Run Code Online (Sandbox Code Playgroud)\n\n

从git checkout的手册页

\n\n
\n

git checkout [<tree-ish>] [--] <pathspec>\xe2\x80\xa6\xe2\x80\x8b

\n\n

通过替换索引或 <tree-ish> 中的内容来覆盖工作树中的路径(通常是提交)。当给出 <tree-ish> 时,匹配的路径会在索引和工作树中更新。

\n\n

由于先前的合并失败,索引可能包含未合并的条目。默认情况下,如果您尝试从索引中检出此类条目,则检出操作将失败并且不会检出任何内容。使用 -f 将忽略这些未合并的条目。可以使用 --ours 或 --theirs 从索引中检出合并特定端的内容。使用 -m,可以放弃对工作树文件所做的更改以重新创建原始的冲突合并结果。

\n
\n

  • 它更多的是一个操作特定的功能,`.` 表示当前目录,git 使用它来计算,因为你在 git 存储库的根目录中打开了一个命令行,所以 git 知道你想要从指定的“检出所有文件”树状” (2认同)