Перебазируйте один раз, зафиксируйте некоторые изменения, затем снова перебазируйте, некоторые неожиданные конфликты

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

Далее я проверил, откуда берутся эти конфликты, и снова удивился. На самом деле конфликты заключались в том, что новый коммит изменил старый в ветке интеграции, которую я уже перебазировал в первый раз! Смотрите следующую картинку.

И если я использую слияние, чтобы получить новые коммиты, вообще никаких проблем!

В ветке интеграции 91ba229 и c4a3755 оба модифицировали один и тот же файл. В ветке интеграции

При первом перебазировании 1st time rebase Второй раз rebase, так как я хочу получить коммиты 5997579 и ed2d5b2, конфликты! Потому что c4a3755 был применен снова и противоречил результату, который я получил от 91ba229!. Но почему?

Почему git снова применил коммит c4a3755?

Кстати, синяя линия — это моя собственная ветка, я не отправлял ее на удаленный сервер и делал только то, что описал в своей ветке.

2-я перебазировка

--------------------- Обновить -------------------

Я нашел некоторую подсказку, но мне все еще нужно немного информации. Таким образом, после 1-го перебазирования мои коммиты не располагались поверх ветки int, а наоборот, то есть коммиты ветки int располагались поверх моих коммитов. Я не понял, почему, но это причина конфликтов на 2-м ребейзе.

Потому что вместо того, чтобы позволить коммитам ветки int стать моей базой, 2 ветки все еще имели старую базу. Затем при применении 2-й перебазировки все коммиты из ветки int применялись снова. Отсюда и конфликты.


person Qiulang    schedule 18.04.2018    source источник
comment
Зачем вам снова перебазировать одни и те же коммиты? Это, очевидно, приведет к конфликтам, так как разные коммиты касаются одних и тех же строк в одних и тех же файлах. Какие именно команды вы использовали?   -  person kowsky    schedule 18.04.2018
comment
Как я уже сказал, я обнаружил, что в ветке int есть новые коммиты 5997579 и ed2d5b2, и я хочу их получить.   -  person Qiulang    schedule 18.04.2018
comment
Какие именно команды вы использовали для перебазирования ветки?   -  person kowsky    schedule 18.04.2018
comment
Я использую sourctree ui, но это должен быть просто git rebase   -  person Qiulang    schedule 18.04.2018
comment
@Qiulang Вы никогда не должны перебазировать общую ветку but never rebase anything you’ve pushed somewhere. rebase   -  person smarber    schedule 18.04.2018
comment
@smarber Я сделал это только в своей ветке, поэтому не понимаю твоих слов. Смотрите мое обновление.   -  person Qiulang    schedule 18.04.2018
comment
@Qiulang I rebased my commits onto the integration branch, я, должно быть, неправильно понял это предложение.   -  person smarber    schedule 18.04.2018