Повторить слияние только одного файла


112

Я нахожусь в середине большого слияния, и я использовал git mergetoolдля разрешения всех конфликтов, но я еще не зафиксировал, так как я хотел сначала убедиться, что слияние прошло нормально.

Оказывается, я допустил ошибку при разрешении конфликтов в одном файле, и я хотел бы повторить разрешение конфликтов с помощью git mergetoolэтого файла. Поскольку это большое слияние, я бы не хотел повторять слияние для всех других файлов, поскольку, как я понимаю, мне придется иметь дело с git merge --abort.

Я знаю, что могу просто отредактировать файл вручную, но это было бы довольно утомительно, и было бы намного проще просто повторить git mergetoolоперацию. Это возможно?


Ответы:


181

Кажется, я просто искал не в том месте. Решение оказалось довольно простым.

git checkout -m <file>

Это возвращает файл в конфликтное состояние. Затем я могу бежать, git mergetoolчтобы повторить слияние.


2
Это сработало для меня. Индекс оказался в состоянии слияния, но mergetool не подумал о каких-либо невыполненных слияниях. Я только что сделал слияние с помощью vi, но все равно это было странно.
Крис Клиленд,

1
Спасибо! это именно то, что нужно. Кстати, ручное слияние с vi всегда доставляет удовольствие и полностью удовлетворяет. сдвиг влево или вправо никогда не давал мне уверенности в том, что слияние идет, как ожидалось
asgs

1
В ответе на этот повторяющийся вопрос есть несколько полезных дополнительных деталей (с тем же ответом) .
Джошуа Голдберг

-4

Вы всегда можете редактировать файлы вручную.

Если вы используете git merge --no-commit, то у вас будет просто подготовленный коммит (после автоматического и полуавтоматического) слияния.

Вы по-прежнему можете безопасно редактировать файлы и делать коммит только тогда, когда полностью удовлетворены.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.