4

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

如何为多行自动和单独执行此操作?

举个例子。我的 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()文件 A.cpp 的方法中的一些行,并且b()(也许我添加了一个方法c())。请注意,我这里只讲函数是为了让交流更容易——当然,git 不知道编程语言。

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

c5069d5 此提交将方法 a() 添加到文件 A.cpp
 a5559d5 修复!此提交将方法 a() 添加到文件 A.cpp
ac5db87 这个提交在文件 B.cpp 中做了一些事情
733e2ff 此提交将方法 b() 添加到文件 A.cpp
a53aad5 修复!此提交将方法 b() 添加到文件 A.cpp
ac5db87 此提交在文件 B.cpp 中执行其他操作

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

更新,替代措辞:

git-blame 向我显示每行的最后一次提交。如果我现在更改一行,我想修复 git-blame 之前向我展示的该行的提交。

4

1 回答 1

0

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

于 2020-05-07T16:09:12.860 回答