Git瓷器命令将单个文件恢复到HEAD状态但保持其暂存状态?

时间:2013-05-02 10:31:22

标签: git file reset git-checkout stage

是否有git porcelain命令将阶段文件的工作目录状态恢复为HEAD状态,同时保持文件的暂存状态?后来我希望能够将工作目录状态恢复到文件的暂存状态。我最初的想法是使用git checkout HEAD -- targetfile,但它也会重置文件的暂存状态。我发现这对git stash是可行的,但是它会影响其他文件,而我希望专注于单个文件并保持其他文件的状态不受影响,否则可能导致合并冲突:

git add targetfile
git stash
... // modify tagetfile in seeking of different task solution, possibly modifying other files too
git checkout HEAD -- targetfile //drop the different solution attempt, keep other modified files if any
git stash apply --index // revert to the stashed staged solution, but produces merge conflict for other modified files

我在最后找到了一个很好的article汇总表,缺少了这个问题中描述的场景。在我看来,这应该是很容易实现的,但我很惊讶阶段和工作的dir状态是如此紧密耦合 - 你可以重置文件的暂存状态,同时保留其工作目录状态,但我很难实现相反的目的。

1 个答案:

答案 0 :(得分:3)

这不是很好,因为它不能正确获取文件的可执行状态,但是你可以这样做:

git show HEAD:targetfile > targetfile

理想情况下,人们会想要--working-tree-only的{​​{1}}选项,但我不知道那样的事情。