Я ищу простой способ перестроить фрагменты между патчами. Скажем, у меня есть некоторые репо с двумя последовательными фиксаций к нему:git rebase: движущиеся фрагменты между коммитами
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
Есть ли простой способ сделать это, с rebase и различными командами с параметрами -p
? Я думаю, что я мог бы сделать интерактивную перезагрузку, отредактировать первый комментарий, использовать git reset -p
, чтобы удалить последнюю часть изменения, сохранить ее как временную фиксацию, завершить rebase, а затем сделать еще одну интерактивную rebase, чтобы выровнять временную фиксацию следующим образом , Это требует много размышлений и усилий, хотя в реальной ситуации, когда я хочу переставить два (или более) больших фиксации и вам нужно нести много фрагментов в обоих направлениях, возможно, пропуская некоторые промежуточные коммиты. Есть ли более простой способ сделать это, не создавая временных коммитов?
Это не кажется проще, а я мог бы быть недопонимание, что вы имеете в виду. Выполнение интерактивной перестановки и смена 'pick' на' squash' - это не сложная часть. – Tgr