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

Пытаемся понять, как будет выглядеть file1.cpp после слияния мерж-реквеста в Gitlab. Я (dev1) работаю над веткой dev и изменил строку 2 файла file1.cpp, зафиксировал и поднял запрос на слияние. Теперь я ждал 1 день до слияния. К тому времени другой разработчик (dev2) изменил строку 4 файла file1.cpp, зафиксировал и слил в master. Теперь строка 4 отличается в моем file1.cpp по сравнению с file1.cpp из master. Итак, если я объединю свой запрос, то как будет выглядеть окончательная версия file1.cpp?

1) file1.cpp:  
line 2 by dev1 
... 
line 4 by dev2

2) file1.cpp: 
line 2 by dev1
...
line 4 by dev1

Я сомневаюсь, что строка 4 из моего изменения будет присутствовать в конечном файле или строка 4 из dev2 будет присутствовать наконец. Если строка 4 из dev2 наконец-то будет присутствовать, то почему это так? Потому что мои изменения происходят после изменений dev2.

1 ответ

git не будет молча отбрасывать изменения вашего коллеги или ваши собственные изменения.

Это либо:

  • найти способ объединить оба ваших изменения,
  • или вызвать так называемый конфликт слияния и попросить кого-нибудь принять меры вручную, чтобы определить, каким должен быть конечный результат.

Если возникает конфликт слияния, стандартное ручное действие:

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

Обратите внимание, что "изменения автоматически объединяются git"не гарантирует, что ваш код будет работать.

Два примера:

Предположим, ваше изменение: функция переименования computeThis к computeThat,
а изменение dev2: вызов функцииcomputeThis,
ваши комбинированные изменения могут привести к тому, что что-то не компилируется.

Предположим, ваше изменение: добавьте x -= 1инструкция,
а изменение dev2: добавитьdouble d = 1 / x,
и по какой-то причине перед вашим изменением в коде явно говорилось, чтоx > 0в этой функции
результат будет компилироваться, но может возникнуть новый случай ошибки, когдаx == 1.

Чтобы выделить:

конечный результат все равно должен быть проверен и пересмотрен.

Другие вопросы по тегам