在不更新HEAD的情况下签出提交

时间:2018-03-30 09:33:07

标签: git

我需要将工作目录和索引更新为某些提交的状态。 当我运行git checkout Git更新HEADindexworking directory时。 我知道我可以通过简单地指定文件的路径来检查提交中的单个文件而不更新HEAD。但是,为整个工作目录执行此操作的最佳方法是什么?

目前我只是这样做:

ID=$(git rev-parse HEAD)
git reset --hard COMMIT_ID
git reset --soft $ID

1 个答案:

答案 0 :(得分:3)

使用git checkout作为路径<{1}}

dot

来自git checkout的手册页:

  

git checkout COMMIT_ID .

     

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

     

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