マージ中にGitが常に新しいバージョンを選択するように強制しますか?


103

私がmergeGitしていて、マージの競合があるとしましょう。

私の質問は、競合するコードの新しいバージョンを常に選択するようにgitに強制することができるので、手動で競合を解決する必要はありませんか?



しかし、私はマージを行いたい(コミットを上書きしない)が、加えて競合を自動的に解決したい。
bartek 2012年

回答:


188

これは厳密に「新しい」バージョンではありませんが、を使用して常に現在のブランチgit merge branch -X oursのバージョンを優先するように、またはを使用してマージされるブランチのバージョンを優先するようにgitに指示できますgit merge branch -X theirs

からman git-merge

私たちのもの:

このオプションは、バージョンを優先することで、競合するハンクを強制的に完全に自動解決します。私たちの側と競合しない他のツリーからの変更は、マージ結果に反映されます。バイナリファイルの場合、コンテンツ全体が私たちの側から取得されます。

彼らのもの:

これは「私たち」の反対です。


9
ours- theirs!! それを言うだけで、コマンドの機能を理解できます!Gitが大好きです。:D
Haywire 2013年

14
注:を既に使用git merge branchしている場合は、使用するgit merge --abort前にを使用する必要があります。
John Dvorak

1
うまくいきません。それでもマージは中止されます。error: The following untracked working tree files would be overwritten by merge:そもそもこれらのファイルがこのブランチにある理由はわかりませんが、上書きする必要があるため、gitは拒否します。
mcv 2014年

2
追跡されていない場合は、git addまず削除(または)する必要があります。について少し読んでみてくださいgit clean
Renato Zannon、2014年

実行した後git merge ours、いくつかの競合ファイルがある場合、ログはありますか?と追跡できgit merge oursますか?
zx1986 14

19

私はこれを使います

git fetch --prune
git reset --hard origin/master

2
この解決策は、masterブランチでオーバーライドすることだけが目的だったときに、マージされていない競合を修正するのに役立ちました。私はgit reset --hard master(ローカルから)を使用しました
Juan Mendez
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.