файл был изменен на главном сервере после того, как я поднял запрос на слияние
Пытаемся понять, как будет выглядеть 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
.
Чтобы выделить:
конечный результат все равно должен быть проверен и пересмотрен.