通常命令 tag
_______|_________
| |
Home option
|
sub
会自动创建一些提交日志消息的提交,说明哪些提交已被还原。
要避免自动提交,请选择git revert
(或-n
)。
但是在此命令之后,恢复的文件位于暂存区域中。我可以使用命令--no-commit
取消它们。
是否有直接的方法可以在不提交和暂存的情况下还原提交?
换句话说:是否有直接命令来恢复仅将更改应用于工作目录的提交,而不触及索引?
答案 0 :(得分:34)
没有单一的命令。如您所知,您可以将git revert -n
与git 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存储库外部使用。