52

在 Git GUI 中,我可以选择 diff 的一部分并仅暂存那些行或块。我将如何做相反的事情,如回滚文件中更改的行。通常这些是我只想恢复但仍暂存/提交同一文件的其他部分的意外空白更改。

4

5 回答 5

93

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

Git 1.6.5+ 的更新

在 1.6.5 版本中,Git 学会了使用-p/--patch标志结账。您可以使用git checkout -p -- filename.

文档

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

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

于 2012-05-31T02:55:17.793 回答
17

在 Git Gui 中,

  1. 暂存包含不需要更改的整个文件
  2. 取消你想要恢复的线条/大块头
  3. 在Unstaged Changes窗格中选择文件,然后Commit- >Revert Changes撤消对该文件的所有(未暂存)更改
于 2012-08-20T15:02:37.470 回答
4

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

以上资料来自: http: //nathanj.github.com/gitguide/tour.html

于 2012-05-31T02:48:01.263 回答
4

从 Git 2.24 开始,Git GUI 在上下文菜单中具有“Revert Hunk”和“Revert Line”选项,类似于 staging。您甚至可以“撤消上次还原”,这是一个很好的补充。

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

于 2020-02-19T11:00:19.583 回答
4

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

于 2019-02-08T21:30:28.283 回答