以下命令更改工作目录以及阶段:
git checkout <commit> <file>
以下命令不会触及工作目录,只会更改阶段:
git reset <commit> <file>
我只想更改工作目录,但不想触摸舞台。我可以使用以下命令执行此操作:
git checkout <commit> <file>
git reset <file>
如何使用单个命令执行此操作?
答案 0 :(得分:2)
最正确的答案是&#34;你不能&#34;。虽然有两个简单的解决方法(好吧,第一个比第二个简单,第二个是说&#34;你可以&#34;):
使用git show
,例如git show HEAD~3:path/to/foo.txt > path/to/foo.txt
除了必须两次写入文件名/路径之外,这里的缺点是show
命令不应用任何涂抹过滤器。如果你没有拥有任何涂抹过滤器,那就没什么大不了的。
您可以选择不同的&#34;索引文件&#34; ({1}}期间(临时区域),以便所触及的舞台不是您用于下一次提交的舞台:
git checkout
这里的缺点是这有点笨拙,你应该记得清理虚拟索引文件(虚假的暂存区域)。另外,上面假设shell(sh / bash)语法;您可能需要在其他shell中使用GIT_INDEX_FILE=/tmp/dummy git checkout <commit> <path>
程序或其他形式。