Конфликт слияния Git
Я и мой друг разветвляемся из основного хранилища (вверх по течению). Прошлой ночью у нас была та же версия этого хранилища на локальной машине. Затем я добавил новую функцию, и мой друг также добавил еще одну новую функцию. Мой друг вытащил запрос к основному хранилищу, и я объединил этот запрос извлечения с вышестоящим хранилищем без конфликта. И когда я получаю из апстрима и сливаюсь с моей основной веткой, это конфликтует. Что я должен сделать в этой ситуации, чтобы разрешить конфликт? (В исходном хранилище должно быть 2 новых функции после разрешения конфликта)
3 ответа
Просто просмотрите файлы, помеченные как конфликтующие git status
и найти маркеры конфликта (вы можете искать ====
в файле). Согласуйте изменения между ними, выясните, не произошло ли чего-то неожиданного из-за комбинации вашего кода, запустите ваши тесты, а затем используйте git add
а также git commit
как обычно, чтобы совершить коммит, объединив новую функцию вашего друга с вашей.
Upstream: original with friend's feature with both
\ \ / \ /
\ -- Friend's --/ \ /
\ \ /
---- Yours ------------------------- your merge
Обратите внимание, что вы также можете напрямую разрешить конфликт слияния из самого Eclipse/Egit:
Смотрите " Egit: Решение конфликтов слияния":
Вы можете вручную редактировать текст слева или использовать кнопку Копировать текущее изменение справа налево, чтобы скопировать конфликтующие изменения справа налево.
Следующий шаг - из контекстного меню файла выбрать Team -> Add to index. Чем совершать.
Вы можете напечатать git difftool path/filename
в консоли использовать инструмент для разрешения конфликта или использовать программное обеспечение Git, в которое встроено разрешение конфликтов. Мне очень нравятся SmartGit (от создателей SmartSVN) и TortoiseGit (очень похожий на TortoiseSVN).