4

是否有 git瓷器命令可以将暂存文件的工作目录状态恢复为其 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

我在最后发现了一篇不错的文章,其中缺少该问题中描述的场景。在我看来,这应该很容易实现,但我很惊讶暂存目录状态和工作目录状态如此紧密耦合 - 您可以在保留文件工作目录状态的同时重置文件的暂存状态,但我很难做到相反。

4

1 回答 1

3

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

git show HEAD:targetfile > targetfile

理想情况下,一个人会想要一个--working-tree-only选项git checkout HEAD -- targetfile,但我不知道这样的事情。

于 2013-05-02T10:40:26.817 回答