Конфликт git merge после изменения git - "Ваша ветвь и" происхождение / мастер "разошлись"
Вот что происходит:
- После недавнего коммита с удаленным мастером я делаю небольшое тривиальное изменение в своем локальном репо
- я добавить
git commit --amend
и оставьте то же самое сообщение коммита как HEAD - Я пытаюсь подтолкнуть репо к мастеру
git push
И теперь я получаю
On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 1 different commit each, respectively.
(use "git pull" to merge the remote branch into yours)
nothing to commit, working directory clean
Я хочу понять:
- Почему это именно так и происходит?
- Что я могу сделать, чтобы предотвратить это?
- Как я могу согласовать мастер с местным после изменения мерзавца?
1 ответ
Вы изменили существующий принудительный коммит, создав собственную версию (поскольку ее содержимое изменилось)
--x---Y (master: that is the X amended)
\
--X (origin/master)
Вот почему у вас есть 1 и 1 разный коммит между мастером и источником / мастером.
Что я могу сделать, чтобы предотвратить это?
Не "исправлять" существующий выдвинутый коммит (только локальный, еще не переданный)
Как я могу согласовать мастер с местным после изменения мерзавца?
Просто перебазируем поверх оригинала / мастера, затем нажимаем
git rebase origin/master
--x--X---Y' (master)
|
(origin/master)
git push
--x--X---Y' (master, origin/master)
Если вы единственный, кто работает над проектом после внесения изменений, вы могли бы запустить
git push -f origin master
Если вы не единственный, кто работает над проектом, будьте осторожны с тем, что делаете, потому что это переписывает историю.
Вот отличная статья об изменении:
https://medium.com/@igor_marques/git-basics-adding-more-changes-to-your-last-commit-1629344cb9a8