2012-05-11 12 views
13

我々は1つの開発ブランチ「A」と2つのサブブランチ「B1」と「B2」(どちらもAから取ったもの)を持っているとします。 B1とB2のプロジェクト全体でフォーマットコードコマンド(ここではReSharperのクリーンアップコード)を実行するとします。Gitマージ操作を行うと、両方のブランチと同じ変更が無視されますか?

これで、B2をB1にマージしようとすると、Gitはのすべてのファイル(このケースではかなりの数)のコンフリクトを報告します。 B1とB2の両方で全く同じ変更が行われたにもかかわらず、Gitは矛盾とみなしているようです。

方法、カスタムドライバ/ git属性などがありますか? B1とB2のファイルがまったく同じ場合、Gitのマージ操作は競合を報告しませんか?

多分私は間違っているかもしれませんが、空白/行末の問題(たとえば、B1とB2の異なる行末)があるかもしれません。その場合、スタックオーバーフローで解決策を見つけることができます。

+1

エディタでファイルを開くと、コンフリクトを調べることができますが、なぜgitにコンフリクトがあるのか​​を確認できます – CharlesB

+2

リファクタリング以外の作業はどれくらいのブランチで実行されましたか?私はGitのために具体的に話すことはできませんが、一般的には、これを1つのブランチでのみ行い、変更を親にマージしてから、2番目のブランチにそのリファクタを拾います。 – OrionRogue

+0

gitでkdiff3をmergetoolとして使用しようとしましたか?通常、それらの些細な矛盾はそれ自身で処理できます。 – vhallac

答えて

1

昨日、私のメインブランチとマージした後のサイドブランチからチェリーピックをたくさんした後、私は同様の問題を抱えていました。同一の変更を伴う多くの競合。

git checkout main-branch 
merge --no-commit -s recursive -X ours side-branch 

"ours"を "theirs"に変更することができます。すべての競合は自動的に "私たち"または "彼ら"の側を選択して解決されるので注意してください。私の場合は、これに起因するミスマージがほとんどなく、私は手動で修正しました。ここでは、マージ戦略の興味深いオプションを紹介します:https://www.kernel.org/pub/software/scm/git/docs/git-merge.html

また、私の場合は、ブランチが大きすぎて、新しいリベースの相互作用ごとに新しい競合があったため、正常に動作しませんでした。これを参照してください:http://davitenio.wordpress.com/2008/09/27/git-merge-after-git-cherry-pick-avoiding-duplicate-commits/

関連する問題