Git Diff - 如何还原选定的行或块

时间:2012-05-31 01:03:48

标签: git diff git-gui

在Git GUI中,我可以选择差异的一部分,然后只显示那些行或块。我将如何反向操作,如在文件中回滚更改的行。通常这些是偶然的空白更改我只想恢复但仍然分阶段/提交同一文件的其他部分。

5 个答案:

答案 0 :(得分:61)

使用git add -p暂存所需的部分,然后丢弃(git checkout -- filename)未分级的更改。

更新Git 1.6.5 +

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

来自the docs

  

以< tree-ish>之间的差异交互式选择帅哥。 (或索引,如果未指定)和工作树。然后将所选择的帅哥反向应用于工作树(如果指定了< tree-ish>,则为索引)。

     

这意味着您可以使用git checkout -p有选择地放弃当前工作树中的编辑。

答案 1 :(得分:11)

在Git Gui,

  1. 暂存包含不需要的更改的整个文件
  2. 取消你想要回归的线条/帅哥
  3. 选择 Unstaged Changes 窗格中的文件和 Commit-> Revert Changes 以撤消对该文件的所有(未分级)更改
  4. 来源:http://git.661346.n2.nabble.com/Revert-hunk-td4991128.html

答案 2 :(得分:3)

对于Git Gui: 首先,单击“重新扫描”以扫描已修改的文件。接下来,单击文件名左侧的图标以暂存提交的所有修改。然后,右键单击调试行并选择Unstage Line From Commit。

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

答案 3 :(得分:2)

自Git 2.24开始,Git GUI在上下文菜单中具有“还原大块”和“还原行”选项,类似于登台。您甚至可以添加“撤消上一次还原”功能。

这是添加了此功能的提交: https://github.com/git/git/commit/62bd99934bb2b1a07f786fdf9b94d7b692768e30

答案 4 :(得分:1)

为此,我使用git stash -p。这样做的副作用是,使用从工作树中删除的更改来创建存储,这有时对于快速恢复它们很有用。