是否有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状态是如此紧密耦合 - 你可以重置文件的暂存状态,同时保留其工作目录状态,但我很难实现相反的目的。
答案 0 :(得分:3)
这不是很好,因为它不能正确获取文件的可执行状态,但是你可以这样做:
git show HEAD:targetfile > targetfile
理想情况下,人们会想要--working-tree-only
的{{1}}选项,但我不知道那样的事情。