Viji
@Viji
Associate DevOps Engineer

Что происходит под капотом git при разрешении Merge conflict?

Привет всем,

типичная ситуация - перед посылкой branch feature-A234 в remote repo с помощью (git push origin feature-A234) делаю local merge таким образом:
git checkout develop
git pull develop
git checkout feature-A234
git merge develop
---> получаю следующий merge conflict (на рисунке)
5eeb2982df4f2182930905.png

Редактирую показанный на экране файл, удаляю
>>>>HEAD
>>>>develop

Получилось в общем, смесь develop и моего branch :

24: resource "aws_network_acl" "feature_acl" {
25: ## this acl created by the other user
26: vpc_id = "${aws_vpc.main.id}"
27: }
28:
29: resource "aws_network_acl" "my_acl" {
30: ## this acl created by vadim
31: vpc_id = "${aws_vpc.main.id}"
32: }

после этого делаю
git add -A
git commit -m "conflict resolution"
git push origin feature-A234

Затем делаю Pull Request на удаленном GitHub/Bitbucket и никаких конфликтов нет... Не понимаю почему, ведь я вообще все изменил и даже добавил новые строки как vpc_id = "${aws_vpc.main.id}" ? Ведь в оригинальном develop нет этого кода и Pull Request должен создать новый конфликт, из-за наложения строк, а он не происходит

Можете подробнее обьяснить, как это работает?

всем добра,
Вадим
  • Вопрос задан
  • 219 просмотров
Решения вопроса 1
Конфликт бы возник, если в файл в оригинальном develop внесли изменения.
А так, git видит, что есть путь по коммитам до файла в оригинальном develop и он соответствует тому, на который были наложены изменения во время разрешения конфликта, а значит можно смело заменять файл новым.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы