我想撤销某个提交,但只想针对某些文件进行操作。(不是检出操作;是撤销操作。 如果你不了解区别,请继续阅读。)
我尝试过这样做:
git revert --no-commit abcdef123456 -- my/path/to/revert
而我遇到了这个错误
fatal: ambiguous argument 'my/path/to/revert': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
但这正是我所做的!(是的,`my/path/to/revert` 在我的工作树中。)我认为我的工作理论是不可能只还原一些文件,并且Git的错误信息是误导性的。
(Git 1.7.9.5)
这不是关于在Git中将单个文件还原到先前版本的重复问题。
- 那个问题(尽管标题如此)涉及到git-checkout。检出将文件恢复到以前的版本,删除该点之后的所有提交。
- 我的问题涉及到git-revert。还原撤销特定提交中进行的更改,而不影响可能在其后进行的其他提交。 它应用(仅)该提交的相反操作。
git show <commit> -- <path> | git apply -R
,在这里找到:http://git.661346.n2.nabble.com/Revert-a-single-commit-in-a-single-file-td6064050.html - steabertcheckout
和revert
之间区别的解释。 - Paul Draperrevert
。所以如果您有提交A
(较旧),B
和C
,您想要反转来自A
的更改,同时保留来自更新提交B
和C
的更改。 - Chris