关于Git Diff:Git Diff – 如何还原选定的行或块

Git Diff - How do I revert selected lines or chunks

在GitGUI中,我可以选择diff的一部分,然后只准备那些行或块。我该如何做相反的事情,如回滚文件中更改的行。通常,这些都是意外的空白更改,我只想恢复,但仍然准备/提交同一文件的其他部分。


git add -p准备所需零件,然后丢弃(git checkout -- filename未老化的更改。

更新git 1.6.5+

在1.6.5版中,Git学会了使用-p/--patch标志结账。您可以使用git checkout -p -- filename一步丢弃块。

从文档中:

Interactively select hunks in the difference between the (or the index, if unspecified) and the working tree. The chosen hunks are then applied in reverse to the working tree (and if a was specified, the index).

This means that you can use git checkout -p to selectively discard edits from your current working tree.


在Git图形用户界面中,

  • 暂存包含不需要的更改的整个文件
  • 解开你想要恢复的线条/大块
  • 在"未分页的更改"窗格中选择文件,然后提交->还原更改以撤消对该文件的所有(未分页)更改。
  • 来源:http://git.661346.n2.nabble.com/revert-hunk-td4991128.html


    对于Git GUI:首先,单击"重新扫描"以扫描修改的文件。接下来,单击文件名左侧的图标,准备提交所有修改。然后,右键单击调试行并从提交中选择Unstage行。

    以上信息来自:http://nathanj.github.com/gitguide/tour.html


    为此,我使用了git stash -p。它有一个副作用,即用从工作树中删除的更改创建一个隐藏,这有时对快速恢复它们很有用。