неверный git rebase -i --onto <branch>для родителя <branch> - PullRequest
0 голосов
/ 16 января 2019

Я наблюдал странное поведение при использовании git rebase между проектами, которые я клонировал и редактировал впоследствии.

Я использую git rebase, чтобы применить изменения из шаблонов проектов к клонированным проектам. В большинстве случаев у меня нет проблем, и если я сталкиваюсь с конфликтом, я могу решить его вручную. Но недавно я обнаружил, что даже если нет конфликта, в редких случаях ребаз применялся к родителю ветки HEAD, я хотел, чтобы ребаз применялся.

У меня есть следующий конец главной ветви:

* 5a42f4b (master) commit 3 - successful rebased from template
* d9ef9ba (tag: online, backup/master) commit 2 - imported into template
* 11acd0e commit 1
...

и у меня есть ветка удаленного отслеживания из моего шаблона:

* b2f423e (HEAD, template/master) commit 6
* 2152143 commit 5
* 0535e9a commit 4
* 68e1fd2 commit 3
* b7416ef commit 2 - rebased from edited clone
...

Теперь я хочу перебазировать коммит 5 на мастер и использовать

git rebase -i --onto master 0535e9a 2152143

Я разрешаю конфликт вручную и получаю новое дерево:

* ba002d4 (HEAD) commit 5 - rebased from template
* d9ef9ba (tag: online, backup/master) commit 2 - imported into template
* 11acd0e commit 1
...

но это не то, что я хотел, поэтому я перебазирую снова:

git rebase -i --onto master d9ef9ba ba002d4

на этот раз я даже не получаю конфликт, потому что конфликт уже разрешен из-за более ранней фиксации, и получаю:

* ca7d80b (HEAD) commit 5 - successful rebased from template
* 5a42f4b (master) commit 3 - successful rebased from template
* d9ef9ba (tag: online, backup/master) commit 2 - imported into template
* 11acd0e commit 1
...

так что, по крайней мере, я достиг своей цели, но я действительно не могу найти объяснение, почему первый ребаз не работал так, как задумано. Есть намеки?

...