Ни один из других текущих ответов на самом деле не «объединит» файлы, как если бы вы использовали команду слияния. (В лучшем случае они потребуют от вас ручного выбора различий.) Если вы действительно хотите воспользоваться преимуществами объединения с использованием информации от общего предка, вы можете выполнить процедуру, основанную на процедуре, описанной в разделе «Расширенное объединение» в git. Справочное руководство.
Для этого протокола я предполагаю, что вы хотите объединить файл 'path / to / file.txt' из origin / master в HEAD - при необходимости измените. (Вам не обязательно находиться в верхнем каталоге вашего хранилища, но это помогает.)
# Find the merge base SHA1 (the common ancestor) for the two commits:
git merge-base HEAD origin/master
# Get the contents of the files at each stage
git show <merge-base SHA1>:path/to/file.txt > ./file.common.txt
git show HEAD:path/to/file.txt > ./file.ours.txt
git show origin/master:path/to/file.txt > ./file.theirs.txt
# You can pre-edit any of the files (e.g. run a formatter on it), if you want.
# Merge the files
git merge-file -p ./file.ours.txt ./file.common.txt ./file.theirs.txt > ./file.merged.txt
# Resolve merge conflicts in ./file.merged.txt
# Copy the merged version to the destination
# Clean up the intermediate files
git merge-file должен использовать все настройки по умолчанию для слияния для форматирования и тому подобное.
Также обратите внимание, что если ваша «наша» версия рабочей копии, и вы не хотите быть слишком осторожным, вы можете работать непосредственно с файлом:
git merge-base HEAD origin/master
git show <merge-base SHA1>:path/to/file.txt > ./file.common.txt
git show origin/master:path/to/file.txt > ./file.theirs.txt
git merge-file path/to/file.txt ./file.common.txt ./file.theirs.txt