Хитрость в том, чтобы «добавить одну версию в индекс»: это пометит файл как решенный (что означает, что «наши» или «их» больше не будут).
Так что это должен быть последний шаг.
Может быть что-то вроде:
git show :3:<filename> > <filename>.theirs # save the "theirs" version in a tmp file
git show :2:<filename> > <filename> # display the "ours" version in the working dir
git add <filename> # add it to the index
# (marking the conflicting file as resolved)
move <filename>.theirs <filename> # erasing the file with the "theirs" version
# in the working directory
Не совсем "безболезненно" ...
Чтобы избежать временного файла, Якуб Нарембский предлагает использоватьgit update index
(сантехническая команда) для непосредственного управления индексом.
--replace --cacheinfo <mode> <object> <path>
--cacheinfo
используется для регистрации файла, который не являетсяв текущем рабочем каталоге.Это полезно для слияния минимального извлечения.
По умолчанию, когда в индексе существует путь к файлу, git update-index отказывается от попытки добавить path/file
.Точно так же, если файл path/file
существует, путь к файлу не может быть добавлен.С флагом --replace
существующие записи, конфликтующие с добавляемой записью, автоматически удаляются с предупреждающими сообщениями.