在Git GUI中,我可以选择差异的一部分,然后只显示那些行或块。我将如何反向操作,如在文件中回滚更改的行。通常这些是偶然的空白更改我只想恢复但仍然分阶段/提交同一文件的其他部分。
答案 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,
来源:http://git.661346.n2.nabble.com/Revert-hunk-td4991128.html
答案 2 :(得分:3)
对于Git Gui: 首先,单击“重新扫描”以扫描已修改的文件。接下来,单击文件名左侧的图标以暂存提交的所有修改。然后,右键单击调试行并选择Unstage Line From Commit。
答案 3 :(得分:2)
自Git 2.24开始,Git GUI在上下文菜单中具有“还原大块”和“还原行”选项,类似于登台。您甚至可以添加“撤消上一次还原”功能。
这是添加了此功能的提交: https://github.com/git/git/commit/62bd99934bb2b1a07f786fdf9b94d7b692768e30
答案 4 :(得分:1)
为此,我使用git stash -p
。这样做的副作用是,使用从工作树中删除的更改来创建存储,这有时对于快速恢复它们很有用。