Когда кто-то выбрал вишню из моих коммитов и сделал свои коммиты, как мне слиться? - PullRequest
3 голосов
/ 17 декабря 2010

Предположим, я разветвляю чье-то git-репо и совершаю коммиты A, B, C и D. Персона, которую я разветвлял, затем выбирает вишню A и C, которые становятся A 'и C'.Он также делает коммиты X, Y и Z своими собственными.Итак, после всего этого у моей ветки есть ABCD, а у него A 'C' XY Z. Предположим, что обе ветки опубликованы, поэтому rebase не является привлекательным вариантом.Также предположим, что XYZ не конфликтует ни с одним из ABC D. Как мне слить эти две ветви полезным способом?Должен ли я просто объединить, а затем вручную разрешить все?Могу ли я что-нибудь сделать с дублирующимися сообщениями коммита в журнале объединенной главы?Обречены ли эти две ветви на синхронизацию только потому, что теперь они выбирают коммиты друг друга?

Ответы [ 2 ]

3 голосов
/ 17 декабря 2010

Прямое слияние должно работать.Git должен заметить идентичные наборы изменений и не будет пытаться объединить A / A 'или C / C'.Если X, Y или Z коснулись того же кода, который изменил A '/ C', вам, возможно, придется разрешать конфликты, особенно если B или D. касались одного и того же кода.

Вы всегда можете git merge --no-commit ипроверьте результат, чтобы увидеть, соответствует ли он ожидаемому.

1 голос
/ 30 декабря 2014

В случае отсутствия конфликтов, прямое слияние очевидно.Если есть конфликты, хотя ...

Вы можете сначала объединить его C ', любые конфликты на этом этапе связаны с повторным применением ваших собственных изменений, если они нетривиальны или потому что они применяются немногопорядка.Это может произойти, если ваш C построен на B, а его C 'не является чистой копией, или если какой-либо из BCD создан на A, поэтому повторное применение его A больше не является очевидным запретом и т. Д.может пропустить подробное расследование конфликта и просто принять вашу версию, вручную или:

git merge --strategy=ours C'

Затем объедините остальные, уделяя больше внимания конфликтам там.Если его XYZ действительно не касается материала ABCD, это должно пройти без конфликтов.Если он сделал что-то странное или неправильное во время слияния C с C ', и вы отбросили это при слиянии C', оно может вернуться и укусить вас здесь или в любое время в будущем.

...