Когда кто-то вышел из вишни из моих коммитов GIT и совершил свои собственные коммиты, как мне слиться?
-
11-10-2019 - |
Вопрос
Предположим, что я разжигаю чей-то git Repo и делаю Commits A, B, C и D. The Persom, которого я разбил от того, что вишневые а и C, которые, следовательно, становятся 'и C'. Он также делает коммиты X, Y и z собственными. Итак, после всего этого, у моего филиала ABCD, и у него есть 'c' xy Z. Предположим, что обе ветви опубликованы, поэтому Refase не является привлекательным вариантом. Также предположим, что XYZ не конфликтует ни с одним из ABC D. Как мне слияние этих двух ветвей полезным образом? Должен ли я просто объединиться, а затем все разрешить все? Есть ли что -нибудь, что я могу сделать с дублирующими сообщениями коммит в журнале объединенной головы? Обречены ли эти две ветви на синхронизацию, только с этого момента выбирая вишню друг друга?
Решение
Прямое слияние должно работать. GIT должен заметить идентичные наборы изменений и не попытаться объединить A/A 'или C/C'. Если x, y или z коснулись того же кода, что и «/c», вам, возможно, придется разрешить конфликты там, особенно если B или D затронули тот же код.
Вы всегда можете git merge --no-commit
и осмотрите результат, чтобы увидеть, есть ли это то, что вы ожидали.
Другие советы
В случае, если нет конфликтов, прямое слияние очевидно. Если есть конфликты, хотя ...
Во-первых, вы можете объединить его C ', любые конфликты на этом этапе связаны с повторным применением ваших собственных изменений, если они нетривиальны или потому что они применяются немного вне порядок. Может случиться, если ваш C нарастает на B, а его C 'не был чистой копией, или если кто-либо из BCD накапливается на таком повторном применении его A' больше не является очевидным, нето, и т. Д., И т. Д.
Вы можете пропустить подробное расследование конфликта и просто принять свою версию, вручную или:
git merge --strategy=ours C'
Затем объедините остальное, уделяя там больше внимания конфликтам. Если его XYZ действительно не касается ABCD, это должно быть без конфликтов. Если он сделал что -то странное или неправильное во время слияния C как C ', и вы отбросили это при слиянии C', он может вернуться и укусить вас здесь или в любое время в будущем.