Git автоматическое c слияние поверх maual update / commit из той же ветки, которая будет слита - PullRequest
0 голосов
/ 25 мая 2020

У меня есть branch A, который я хочу объединить с branch B (обновлено), некоторые коды / файлы были зафиксированы в branch A вручную из branch B. Теперь я хочу автоматически объединить полные изменения из ветки B в A. У меня есть следующие запросы / сомнения по этому поводу -

  1. Когда я пытался выполнить автоматическое c слияние, git показывает новый код / добавление / обновление файлов, которые уже присутствуют в branch A как часть ранее выполненного ручного обновления / фиксации.
  2. Можно, если go вперед и объединить их, будет ли дублирование кода / файла?
  3. Или нужно слияние вручную? но есть много изменений

Дайте мне шанс объяснить больше, если это не ясно. Любая помощь приветствуется.

1 Ответ

1 голос
/ 25 мая 2020

Это, вероятно, закончится нормально, и Git не создаст повторяющийся код.

Когда вы выполняете слияние, Git смотрит на две головы (ветви, которые вы объединяете) , плюс база слияния, которая обычно является самым последним распространенным коммитом. Если обе головы имеют одинаковое содержимое файла, то слияние тривиально, и Git выбирает этот результат. Если они этого не делают, он пытается включить изменения с каждой стороны.

Когда он это делает, если изменения относятся к двум отдельным областям кода, слияние успешно, потому что Git будет включать изменение с каждой стороны. Если изменения относятся к одной и той же области, но являются идентичными изменениями, то Git просто берет этот идентичный кусок (один раз) и использует его в результате. Если у вас есть разные изменения в одной и той же области, то Git будет конфликтовать, и вам придется решать проблемы вручную.

Если слияние прошло успешно без конфликтов, то Git, вероятно, поступил правильно и вы получите нормальный результат, хотя иногда слияние действительно приводит к странному поведению, потому что Git работает только на строках и по сути не знает о структуре вашего кода. Обычно это можно обнаружить, собрав и протестировав свой код, и на практике неожиданное поведение случается очень редко. Git не дублирует код, если обе стороны имеют одинаковые изменения; в худшем случае он конфликтует и позволяет вам решить, что делать.

Если при слиянии есть конфликты, вам придется разрешить их вручную. Если вы выполняете слияние через GitHub с помощью запроса на перенос, он сообщит вам, есть ли конфликты в запросе на перенос. Если вы выполняете их в командной строке, вам просто нужно попробовать и посмотреть, как это работает.

...