Я перебазировал свои коммиты в ветку интеграции, а затем добавил несколько коммитов. Затем я обнаружил, что в ветке интеграции есть новые коммиты, поэтому я решил снова выполнить перебазирование. Но, к моему удивлению, на этот раз у rebase было довольно много конфликтов.
Далее я проверил, откуда берутся эти конфликты, и снова удивился. На самом деле конфликты заключались в том, что новый коммит изменил старый в ветке интеграции, которую я уже перебазировал в первый раз! Смотрите следующую картинку.
И если я использую слияние, чтобы получить новые коммиты, вообще никаких проблем!
В ветке интеграции 91ba229 и c4a3755 оба модифицировали один и тот же файл.
При первом перебазировании Второй раз rebase, так как я хочу получить коммиты 5997579 и ed2d5b2, конфликты! Потому что c4a3755 был применен снова и противоречил результату, который я получил от 91ba229!. Но почему?
Почему git снова применил коммит c4a3755?
Кстати, синяя линия — это моя собственная ветка, я не отправлял ее на удаленный сервер и делал только то, что описал в своей ветке.
--------------------- Обновить -------------------
Я нашел некоторую подсказку, но мне все еще нужно немного информации. Таким образом, после 1-го перебазирования мои коммиты не располагались поверх ветки int, а наоборот, то есть коммиты ветки int располагались поверх моих коммитов. Я не понял, почему, но это причина конфликтов на 2-м ребейзе.
Потому что вместо того, чтобы позволить коммитам ветки int стать моей базой, 2 ветки все еще имели старую базу. Затем при применении 2-й перебазировки все коммиты из ветки int применялись снова. Отсюда и конфликты.
but never rebase anything you’ve pushed somewhere.
rebase - person smarber   schedule 18.04.2018I rebased my commits onto the integration branch
, я, должно быть, неправильно понял это предложение. - person smarber   schedule 18.04.2018