How do I interactively unstage a particular hunk in git?

In git, if I have a couple of hunks from the same file staged in my index, how can I interactively unstage one of them?

Is there any alternative to unstaging the entire file, and then re-staging the hunks I want to keep, or manually undoing the changes to the working copy, and then interactively adding those undone changes?

14493 次浏览

GitX 有一个很好的用于卸载文件块的 UI: enter image description here

官方客户端已经有一段时间没有维护了,但是具有更多功能的 GitHub 的一个分支在一些圈子里很流行

尝试 git reset --patch filename; 根据 文件,这应该做与 git add --patch相反的事情。短格式 -p也适用于这两个命令。

git gui有一个像样的图形用户界面,可以交互式地展示或取消展示大块头或线条。有更漂亮/更好的 GUI 客户端,但是 git gui是轻量级的、内置的和跨平台的(lin、 win、 mac)。

Https://git-scm.com/docs/git-gui

只需右键单击一个大块来舞台/取消舞台。对于行,首先突出显示行,然后右键单击。