git revert --no-commit without staging

时间:2015-11-12 14:58:59

标签: git git-revert

通常命令 tag _______|_________ | | Home option | sub 会自动创建一些提交日志消息的提交,说明哪些提交已被还原。

要避免自动提交,请选择git revert(或-n)。

但是在此命令之后,恢复的文件位于暂存区域中。我可以使用命令--no-commit取消它们。

是否有直接的方法可以在不提交和暂存的情况下还原提交?

换句话说:是否有直接命令来恢复仅将更改应用于工作目录的提交,而不触及索引?

1 个答案:

答案 0 :(得分:34)

没有单一的命令。如您所知,您可以将git revert -ngit reset合并,以便在索引中撤消撤消。

除了这种方法,你可以使用git apply -R来反对"反向应用"修补程序,您可以将提交转换为git show的修补程序,所以:

$ git show <rev> | git apply -R

具有相同的效果,有一个重要的(但微妙的)差异。让我引用git revert文档并加上我自己的重点:

  

-n, --no-commit
   通常,该命令会自动使用commit创建一些提交    记录消息,说明哪些提交已被还原。此标志适用    将命名提交还原到您的工作所需的更改    树和索引,但不提交。此外,    使用此选项时,您的索引不必与    HEAD提交。 恢复是针对你的开始状态完成的    索引。

换句话说,git revert -n 在索引中运行,其副作用是更新工作树。 git apply命令仅在工作树上运行(默认情况下),实际上可以在git存储库外部使用。