1

我有一个具有以下历史记录的测试存储库:

提交 eb4a4d52a8fe6abdebb93c7747beac2d511003af (HEAD, master) 合并: 22f849c 94e27d1 作者: 你的名字 日期: Mon Jan 27 00:51:42 2014 +0100

Merge branch 'cheryr'

Conflicts:
    FILE

提交 22f849c403b6cdf43280e66e937931bf9d0ab25a 作者:您的姓名 日期:2014 年 1 月 26 日星期日 21:01:35 +0100

4

toto

提交 94e27d1c78833784619e25eeb8e0186f154f2282 (cheryr) 作者:您的姓名 日期:2014 年 1 月 27 日星期一 00:48:12 +0100

toto

提交 2368d78ba95811e9eb9897487cccb7b7f6927910 作者:您的姓名 日期:Sun Jan 26 22:31:51 2014 +0100

10

提交 b1f0f8a1a1951e661a7e833314fc483085516b0c (tmp) 作者:您的姓名 日期:Sun Jan 26 22:19:56 2014 +0100

9

提交 3a8f2e17e721821ae8ebd1e272437c8632224b9a 作者:您的姓名 日期:2014 年 1 月 26 日星期日 22:18:23 +0100

8

提交 28d4a62d4d21c3e​​8155553e1216bfa981afe7212 作者:您的姓名 日期:Sun Jan 26 22:15:42 2014 +0100

7

这是否可以将几个第一次提交压缩为一个,以及合并提交?不可能简单地将HEAD~4传递给git rebase -i因为它将从合并提交的第一个父级返回 4 个提交。

4

2 回答 2

1

git rebase -i HEAD~4会工作得很好,如果它是一个远提交或者你不知道它有多远,获取你想要编辑的第一个提交的父级的哈希,或者对我来说,我获取哈希并附加一个^表示父级

git rebase -i hash^

我觉得~也可以

git rebase -i hash~

p然后,如果您想更改它的消息,您可以将第一个提交设置为 pick或 reword r,其余 3 个设置为 fixup f,这样它就不会一直停止向您询问新的提交消息,它会在中间停止任何冲突,也如果您通过创建一个提交的提交,预计您将需要重新解决任何冲突。

于 2014-01-27T04:28:36.307 回答
0

试试: git rebase -i HEAD^2~3

'^' 符号用于选择父母中的 1 个(在这种情况下,^2 表示选择第二个父母,然后 ~3 表示 'go 3 commits back')

于 2014-01-27T08:27:55.093 回答