Иногда бывает так, что при разрешении конфликтов слияния конечным конечным результатом является «не вносить никаких изменений».
Рассмотрим, например, следующие строки текстового файла:
Balls come in several colors. Red is the most popular.
Вот так файл появился в каком-то коммите. Теперь вы и ваш коллега получили этот коммит и начали работать. Между тем, продажи сообщили вам, что на самом деле зеленый - самый популярный.
Ваш коллега - Брити sh и сделал это:
Balls come in several colours. Green is the most popular.
Вы сделали это:
Balls come in several colors. Green is the most popular.
Вы оба преданы делу, но ваш сотрудник git push
произошел раньше вашего git push
. Затем вы получили ошибку, когда вы запустили git push
по поводу того, что pu sh не является перемоткой вперед, поэтому вы получили коммит вашего коллеги, который изменяет написание слова , а исправляет самое популярное утверждение - и затем вы попытались Git объединить ваши изменения с их, , используя git rebase
.
Вы, конечно, можете переключить правописание обратно на color
, но допустим, вы решили оставить орфографию Briti sh. В этом случае правильное разрешение этого конфликта слияния - сбросить изменения в файл.
Если это было только изменение в вашем полном коммите , правильное разрешение - теперь полностью отбросить ваш коммит . Команда git rebase
предоставит вам эту опцию! Вы должны просто сообщить Git, что это так, с:
git rebase --skip
Перед использованием убедитесь, что это правильный вариант.
Возможно, мой процесс неправильный ...
Перебазировать или объединить - это личное и командное решение. Один размер не подходит всем здесь. Только вы и ваши коллеги / команда могут решить это.
Если вы решите объединить свой коммит с их коммитом, используя git merge
, у вас не будет возможности полностью отменить ваш коммит. Слияние добавляет новые коммиты, а не копирует существующие коммиты; все существующие коммиты остаются, так что нет никакого способа отбросить коммит. Однако вы бы не столкнулись с этой проблемой, если бы выполняли реальное слияние вместо ребазирования: git merge --continue
или git commit
- любая из этих команд делает то же самое на этом этапе - сделает новый коммит слияния, который будет иметь в качестве своего снимка любое разрешение, которое вы выбрали для этого конфликта слияния.