`Git add --patch` multiple files: go to hunk from previous file

`Git add --patch` multiple files: go to hunk from previous file

当 运行 git add --patch 时,它会显示一系列“hunks”,可以分别使用 yn 应用或跳过,以及其他选项editing/etc.

有时,在处理大量文件时,我无意中将 n 标记到了最后,或者只是在我实际打算标记为 ye,导致我转到下一个文件。在这种情况下,在使用补丁编辑器时有什么办法让我将 1 hunk 移回上一个文件吗?

我知道在同一个文件中有一个g选项可以转到特定的 hunk ,但我不确定如何任意移回 1 hunk如果大块头来自以前的文件。有没有办法只“返回”一个大块头?

在这种情况下,我的选择似乎是再次 add -p 所有更改(不好,因为可能有很多文件,需要跳过很多大块),或者采取记下我弄乱的单个文件并单独修补添加单个文件(可能还有许多需要再次跳过的大块)。

正如评论中所建议的,如果您需要更具交互性的东西,请使用 gui 工具。

git 附带一个基本的图形用户界面工具,您可以使用 git gui 调用它,并允许您:

  • 查看未暂存和已暂存的文件(列出它们并查看它们的内容),
  • select 现有补丁中的行(单行或行块)并暂存或取消暂存它们,
  • 以及其他一些操作,例如提交(有或没有修改)或隐藏。

我不太了解其他 GUI 工具,但我确信其中一些工具提供了良好的 运行 接口,相当于 git add -p


作为一般评论:如果您发现自己正在寻找添加部分补丁的改进方法并寻求如何内联编辑差异块,也许我值得问问自己是否您想要的不是:

  • 将文件编辑为您想要的内容,然后暂存

git add -p 当然是 select 仅文件区域的一种便捷方法,但它也是一种创建您从未测试过的提交的方法,因为暂存内容从来都不是确切的内容你有在磁盘上。