マージ中にGitが競合を検出した場合、デフォルトの動作はファイルを<<<
>>>
===
マーカーで埋めることです。
これはほとんどの場合問題ありませんが、競合を別の方法で解決したい場合や、Gitで個別のファイルを作成したい場合があります。
- 元のバージョン、
- バージョンAを変更しました。
- バージョンBを変更しました。
それを達成する方法は?
これらのファイルを一度に作成する簡単なコマンドがない場合(これは少し驚くべきことです)、Gitを拡張してそれを実行する方法があるのではないでしょうか。習慣mergetool
か何か?ただのアイデア。
解決:
私は@KarlBielefeldtの答えの変形に落ち着きました:
savefiles.sh
#!bash
BASE=$1
LOCAL=$2
REMOTE=$3
MERGED=$4
cp "$BASE" "$MERGED.git_BASE"
cp "$LOCAL" "$MERGED.git_LOCAL"
cp "$REMOTE" "$MERGED.git_REMOTE"
# never mark the conflict as merged
exit 1
構成
mergetool.savefiles.cmd=/path/to/savefiles.sh $BASE $LOCAL $REMOTE $MERGED
mergetool.savefiles.trustexitcode=true