2010-11-22 69 views
26

我想知道是否有办法快速撤销特定的提交大块。如何在git中反转特定的提交块?

我可以在两次提交或HEAD之间生成一个diff以查看差异。

我该如何反转其中的一个(或更好的是,一组特定的hunks)?

回答

34
git checkout -p $REF -- path/to/file 

$REF是裁判的名字或提交ID,指定你想从拿文件的状态提交。例如,要有选择地还原上次提交中所做的更改,请使用HEAD^

+3

更确切地说,这将让你有选择地检出以前提交的内容版本;您当前的提交和工作树之间的更改也将被丢弃。 – Cascabel 2010-11-22 17:32:10

2
git difftool $REF -- /path/to/file 

其中$REF是裁判的名字或提交ID指定承诺要从中获取文件状态。例如,要有选择地还原上次提交中所做的更改,请使用HEAD ^。

这个问题已经被@cdhowie回答了,但我发现使用像meld这样的交互式difftool有选择性地恢复旧代码/行代码,特别是如果有新引入的,很难找到代码中的错误。

相关问题