でチェックアウトしfeature/my-branch
、実行していgit merge dev
ます。ファイルに追加される競合マーカーは次のとおりです。
<<<<<<< HEAD
let foo = "foo"
let bar = "bar"
||||||| merged common ancestors
let baz = "baz"
let bar = "bar"
=======
let baz = "baz"
let qux = "qux"
>>>>>>> dev
次に実行しgit mergetool
ます。私p4mergetool
のmergetoolとして設定しましたが、機能しているようです。私の.gitconfig
:
[merge]
tool = p4mergetool
conflictstyle = diff3
[mergetool "p4mergetool"]
cmd = /Applications/p4merge.app/Contents/Resources/launchp4merge $PWD/$BASE $PWD/$REMOTE $PWD/$LOCAL $PWD/$MERGED
trustExitCode = true
auto は上記のgit mergetool
競合を次のように解決します (ツールに表示される競合は 0)。
let foo = "foo"
let qux = "qux"
HEAD と dev が競合していても、1 つのブランチが 1 つの行を更新し、別のブランチが別の行を更新したことがわかります。したがって、おそらく私たちが望むものを推測できます。
私の質問は次のとおりです。
- 実行/構成する方法、
git-mergetool
またはp4mergetool
特にこの仮定を行わずに競合を表示する方法はありますか? 両方のコマンドを実行する必要がありますか:
git merge dev git mergetool
この競合を自動的に解決するには?つまり、次の出力が生成されます。
let foo = "foo" let qux = "qux"
別の言い方をすれば、merge
生成するコマンドを実行するだけで使用できる git マージ戦略/引数はありますか。
let foo = "foo"
let qux = "qux"