【发布时间】:2021-11-11 15:42:58
【问题描述】:
在运行git add --patch 时,它会显示一系列“帅哥”,可以分别使用y 或n 应用或跳过,以及用于编辑/等的其他选项。
有时,在处理大量文件时,我无意中将n 标记到最后一个,或者只标记到一个我实际上打算标记y 或e 的文件中,导致我移动到下一个文件。在这种情况下,在使用补丁编辑器时有什么方法可以让我将 1 个块移回上一个文件?
我知道有一个 g 选项可以转到同一文件中的特定大块,但我不确定如果大块来自前一个大块,如何任意移回 1 个大块文件。有没有办法只“回去”一个大块头?
在这种情况下,我的选择似乎是 add -p 再次更改所有更改(不好,因为可能有很多文件,需要跳过很多大块),或者记下个人我搞砸的文件并单独修补添加单个文件(其中可能还有许多需要再次跳过的大块)。
【问题讨论】:
-
我认为没有。执行
add -p技巧的程序是用 Perl 编写的——至少目前是这样——所以你可以自己破解它。 Perl 程序是经过解释的,因此不需要任何花哨的编译步骤。不过,Git 人员正在用 C 进行重写,之后修复此问题将变得更加困难。 -
是的,为此使用了一个编辑器插件,逃亡者(我也期待 magit)让这种事情发展得快得令人难以置信。
-
这确实可能是一个不错的 GUI 可能是更好选择的情况。
-
有一个基本的 gui,它带有 git,它允许您查看文件的暂存版本与工作树版本,并逐行暂存/取消暂存更改:
git gui。 -
但是:如果您最终寻找复杂的方法来编辑 patches 而不是 files,这表明您可能会更好将您的更改收起来(
git stash -k或cp thatfile thatfile.mine && git checkout thatfile),并在所述文件中编写您希望暂存的内容。