如何恢复/删除在旧的多文件提交中所做的更改,但仅在单个文件中进行?即类似的东西
git revert <commit-specifier> <file>
exceptgit revert
不接受<file>
参数。以下答案均未解决此问题:
Git:恢复单个文件上的旧提交而是关于如何调试冲突。
撤消 Git 中已推送到远程存储库的特定提交并不能解决我的单个文件问题。
Git:恢复较旧的提交也不能解决单个文件问题。
Git 是一个工具集,而不是一个解决方案,因此有多种解决方案。然而,一种相对简单的方法是从 开始git revert -n
,它开始恢复但不完成它:
git revert -n <commit-specifier>\n
Run Code Online (Sandbox Code Playgroud)\n\n当然,这会尝试取消对所有文件的所有更改。您只想撤销对一个文件的更改。但现在已经进行了此尝试而无需提交,您只需要恢复您不想更改的每个文件即可。获取此类文件的列表,然后使用或\xe2\x80\x94 完全按照建议的命令\xe2\x80\x94 使这些文件与当前提交匹配。现在将仅显示一个文件作为要提交的更改,并且您现在可以使用该文件。git revert
git checkout
git restore
git status
git status
git commit
另一种相对简单的方法是使用:
\n\ngit show <commit-specifier> -- <pathspec> | git apply -R\n
Run Code Online (Sandbox Code Playgroud)\n\n如果您希望 Git 在文件的基本版本上使用三向合并,您可以添加-3
到该命令;在这种情况下,添加到命令选项git apply
可能会有所帮助。(与cherry-pick方法一样,您必须自己提交结果。)--full-index
git show
-n