Предполагая, что файл, который вы работаете называется test.txt
, и что файл был оставлен с маркерами конфликта из-за попытки слияния, и вы каким-то образом провалил делать вручную разрешение этих конфликтов, вы можете повторно -Создайте файл с маркерами конфликтов несколькими командами.
В качестве фона это помогает понять, что когда для слияния требуется ручное разрешение конфликтов в файле, он оставляет три разных копии (называемых «этапами») этого файла в вашем git
индексе. Этап 1 является общим предком двух версий файла, который объединяется, а этапы 2 и 3 - это две версии из двух ветвей, которые вы пытаетесь объединить. Некоторые, но не все, утилиты git
понимают синтаксис :<stage>:<filename>
для ссылки на эти записи.
Итак, что вам нужно сделать первым, чтобы повторно создавать временные копии этих трех файлов где-то - я буду использовать /tmp
здесь, но это не является обязательным:
git cat-file -p :1:test.txt > /tmp/test.txt.1
git cat-file -p :2:test.txt > /tmp/test.txt.2
git cat-file -p :3:test.txt > /tmp/test.txt.3
Затем используйте git
сантехника команду git merge-file
, чтобы воссоздать файл с соответствующими маркерами конфликтов. Обратите внимание, что порядок аргументов важен здесь и что было бы неплохо сохранить, какую работу вы уже сделали в этом файле, если вы хотите ссылаться на него при повторном слиянии.
mv test.txt test.txt.broken
git merge-file -p /tmp/test.txt.2 /tmp/test.txt.1 /tmp/test.txt.3 > test.txt
Это будет заново создать test.txt
с маркерами конфликта (хотя без комментариев имени ветви, которые обычно включены - если вы действительно хотите, чтобы эти, вам нужно добавить некоторые -L <branchname>
аргументов - вы можете ввести git help merge-file
в получите дополнительную информацию об этом).
В этот момент вы можете очистить временные файлы и начать с разрешения конфликтов в этом файле. Запомните это, когда закончите, а затем перейдите к остальным файлам.
Вы используете 'git mergetool' или выполняете разрешение вручную? – asm
Независимо от того, что вы используете, всегда можно испортить файл. Обычно я делаю это вручную. –