foo/bar.txt
これを実行すると、マージの競合が発生するとします。
$ git checkout A
$ git merge B
ブランチAから取得して、競合を自動的に解決したいと思いますfoo/bar.txt
(私は自分が何をしているのかを知っているので、これが必要です。ブランチBのバージョンが間違っているので、作業中の変更が失われることはありません。この場合はツリーです。)次のコマンドを実行することで実行できるようです。
$ git reset foo/bar.txt
$ git checkout foo/bar.txt
より単純な単一コマンドソリューションはありますか?
残念ながら、これらのコマンドfoo/bar.txt
は競合がなくても変更されるので、私はそれを望んでいません。foo/bar.txt
衝突がなければ、どんな状態でも残したいですgit merge B
。
したがって、に競合があるかどうかを検出するUnixシェルコマンドが必要です。競合がある場合は、現在のブランチからのfoo/bar.txt
バージョンを取得することで競合を解決します。foo/bar.txt
それ以外のことは何もしません。つまり、他のファイルを変更したり、変更をコミットしたりfoo/bar.txt
、そのファイルに競合がない場合は変更されたりしません。