如何在不更新HEAD的情况下将工作区和索引同步至指定提交状态?
如何更新工作区和索引到指定提交状态但不移动HEAD
嘿,你现在用的那套先存当前HEAD、硬重置再软重置的方法确实能达到目的,但其实Git有更直接的命令可以一步搞定这个需求!
你要的效果是更新索引和工作区到某个提交的状态,但保持HEAD不动,直接用下面这个命令就行:
git checkout <COMMIT_ID> -- .
这个命令的作用拆解:
<COMMIT_ID>是你想要同步到的目标提交ID(也可以用分支名、标签名这类引用)-- .表示把该提交下当前目录及子目录的所有文件都检出到工作区和索引- 关键是:这个操作不会移动HEAD指针,你的分支指针还是停留在原来的位置,只是工作区和索引的内容完全同步到了目标提交
注意事项:
- 如果你的工作区有未提交的修改,执行这个命令会直接覆盖掉这些改动,所以执行前最好先确认工作区干净,或者用
git stash临时保存未提交的内容,之后再用git stash pop恢复。
对比你原来的方法,这个命令更简洁,不需要手动记录当前HEAD的ID,也减少了中间步骤可能出现的失误~
内容的提问来源于stack exchange,提问作者Max Koretskyi
相关产品推荐
相关产品推荐

