0

私は2つの別々のブランチと、これらの両方のブランチで変更されたファイルを持っています(特定の時点以降の別々の履歴-gitのこの誤用について匿名の開発者を非難しましょう)。

私が抱えている問題は、これら 2 つのブランチをマージすると、git が自動的にファイルを変更することです。

そのファイルがマージの競合下にあるとは見なされません (これは、自分で修正して、両方から保持したい部分を選択できるため、素晴らしいことです)。

結局、マージするたびにブランチの1つからいくつかのメソッドが失われるため、gitはあるバージョンを他のバージョンよりも好むようです。

この git 機能を上書きし、ファイルのこれら 2 つのバージョンを比較して、最終ファイルをどのように見せたいかを選択的に選択できるようにするには、どうすればよいでしょうか?

または、私が何をすべきかについての他のアイデアはありますか?

4

2 に答える 2

1

が 2 つのファイルをマージするときgit、2 つの親ブランチで変更された領域が重複していない場合、通常、競合することなく、両側からの変更を新しいファイルに自動的に追加できます。この場合、いくつかのオプションがあります。

  • 、行った変更を確認し、手動でマージを完了するgit merge --no-commit前に必要な調整を行う機会を与えることができます。git commit
  • 反対側で行われた変更が偽物であることがわかっていて、それらを完全に無視したい場合は、 を使用git merge -s oursしてファイルのバージョンを保持できます。

もう 1 つ気を付けなければならないgitrerereは、通常、デフォルトでは有効になっていないメカニズムです。しかし、そうである場合は、手動の競合解決に注意を払い、特定の競合が再び発生した場合は、同じ解決策を自動的に適用します。その場合は、最初のケースのようにを使用git merge --no-commitすることをお勧めします。コミットする前に、目的の結果が得られていることを確認できます。

于 2013-06-18T16:58:06.443 に答える