Ответ 1
Я подошел к этому маленькому драйверу слияния, который делает то, что я хочу. Для моей цели он жестко закодирован в "ведущую" ветку и на "исходный" пульт. Я не знаю, как сделать эти части динамическими.
#!/usr/bin/env sh
if git merge-file -p -q "$2" "$1" "$3" > /dev/null;
then git merge-file "$2" "$1" "$3";
else
MINE=$(git log --format="%ct" --no-merges master -1);
THEIRS=$(git log --format="%ct" --no-merges origin/master -1);
if [ $MINE -gt $THEIRS ];
then git merge-file -q --ours "$2" "$1" "$3";
else git merge-file -q --theirs "$2" "$1" "$3";
fi
fi
Короче, я искал последнюю фиксацию с git -log, которая не была слиянием, отформатирована как временная метка UNIX, затем я сравниваю их и запускаю пользовательский git -merge с eiter ours или их версией.
В качестве небольшого бонуса он сначала делает чек, чтобы проверить, невозможно ли объединить файл без конфликта. Если это возможно, он объединяет оба файла.