git:特定于行的自动修正



我最近了解了git commit --fixup,它将您的提交标记为先前提交的修复程序,并在交互式重新基准期间自动将它们排列在一起。

如何为多行分别自动执行此操作

以下面的例子为例。我的git历史记录如下:

c5069d5 This commit adds method a() to file A.cpp
ac5db87 This commit does something in file B.cpp
733e2ff This commit adds method b() to file A.cpp
ac5db87 This commit does something else in file B.cpp

在我的工作树中,我更改了文件A.cpp和b()的方法a()中的一些行(也许我添加了一个方法c())。请注意,我在这里谈论函数只是为了让通信更容易——当然,git不知道编程语言。

是否可以从工作树中的两个单独更改中自动生成两个单独的修复提交,即:

c5069d5此提交将方法a()添加到文件a.cppa5559d5修正!此提交将方法a()添加到文件a.cppac5db87此提交在文件B.cpp中执行某些操作733e2ff此提交将方法b()添加到文件A.cppa53ad5修正!此提交将方法b()添加到文件A.cppac5db87此提交在文件B.cpp中执行其他操作

(现在工作树包含A.cpp中添加c()的更改)如果这能在工作树中处理多个文件(而不仅仅是本例中的单个A.cpp),那就太好了

更新,备选措辞:

git指责显示了每行的最后一次提交。如果我现在更改了一行,我想修复之前为这行显示的提交git指责。

正如jberrymann的回答中所建议的,https://github.com/keis/git-fixup正是这样。使用命令git fixup -c为您提供一个可能的修复目标列表

最新更新