Git разрешены конфликты слияния и нет изменений для фиксации - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть ветка 'featurex', идущая от разработки. Когда я делаю запрос на разработку, у меня возникают конфликты. Я пытаюсь исправить это в следующих строках:

  1. git checkout featurex
  2. git Слияние развивается (и у меня есть конфликты)
  3. Я исправил конфликты (с сохранением кода моей ветки)
  4. Я ставлю разрешение конфликтов (и на стадии есть какие-либо изменения)
  5. Я хочу зафиксировать, но нет изменений для фиксации

Может быть, мой процесс не так ...

1 Ответ

0 голосов
/ 20 апреля 2020

Иногда бывает так, что при разрешении конфликтов слияния конечным конечным результатом является «не вносить никаких изменений».

Рассмотрим, например, следующие строки текстового файла:

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

...