我正在寻找一种简单的方法来重新安排补丁之间的片段。假设我有一些连续两次提交的回购:
git init
echo -e "foo\n\nbar\n\nbaz" > file
git add file
git commit -m 'initial'
sed -i 's/bar/boom/' file
git commit -am 'first'
sed -i 's/boom/qux/' file
sed -i 's/baz/quux/' file
git commit -am 'second'
所以我的提交历史记录如下:
first
--- a/file
+++ b/file
@@ -1,5 +1,5 @@
foo
-bar
+boom
baz
second
--- a/file
+++ b/file
@@ -1,5 +1,5 @@
foo
-boom
+qux
-baz
+quux
但我希望看起来像这样:
first
--- a/file
+++ b/file
@@ -1,5 +1,5 @@
foo
-bar
+boom
quux
second
--- a/file
+++ b/file
@@ -1,5 +1,5 @@
foo
-boom
+qux
-baz
+quux
有一种简单的方法可以使用带有-p
选项的rebase和各种命令吗?我想我可以做一个交互式rebase,编辑第一个注释,使用git reset -p
删除更改的最后部分,将其保存为临时提交,完成rebase,然后执行另一个交互式rebase来压缩临时提交进入下面的一个。这需要大量的思考和努力,但在现实世界的情况下,我想重新安排两个(或更多)大提交,并需要在两个方向上携带许多片段,可能会跳过一些中间提交。有没有更简单的方法来执行此操作,而无需创建临时提交?
答案 0 :(得分:0)
除非我误读了这个问题......
您可以创建一个单独的分支,对其进行中间提交,然后使用--squash
将其合并回来,它将所有提交组合到一个提交中。