0

dev、 、uat、 の3 つの「メイン」ブランチで作業しmasterます。master次に、新しい作業には「フィーチャー」ブランチを使用devuatますmaster

への PR 中、uat特に 1 人の開発者は、生成された CSS でほぼ一定のマージ競合を確認します(私たちは SASS と gulp を使用しています)。

これは予想外に聞こえるかもしれませんが、差分は非常に驚くべきものです。

+<<<<<<< destination:ac815dd…
.strip--beta .card-feed {
  background: transparent;
}
+=======
+>>>>>>> source:b49e50b72ee…

また:

@media (min-width: 1024px) {
+<<<<<<< destination:ac815ddf3…
   .copy h1 {
Add a comment to this line
+=======
+  .copy > h1 {
+>>>>>>> source:b49e50b72…
     font-size: 34px;
     line-height: 48px;
   }

単純な削除、数行の削除、または単に>競合が発生する理由がわかりません。

当初は行末などを見ようと思っていたのですが、これが生成されてしまい…</p>

どのように原因を調査しますか?なぜこれが起こるのか誰にも分かりますか?

4

1 に答える 1

3

生成された CSS を git に追加する理由があると思うので、ここではこの問題を無視します。

単純な削除、数行の削除、または単に > が競合を引き起こす理由がわかりません。

しかし、それはまさに紛争です。Git は、変更がどれほど深刻かは気にしません。特定の空白の変更を無視するように指示できますが、複数の改行を 1 つとして扱わないようにすることができます。

2 つのコミット A と B の 3 方向マージは、次のように機能します。

  • 共通の祖先 C を見つけます。
  • C と A の違いを見つけます。
  • C と B の違いを見つけます。
  • 行ごとではなく、ハンクごとに、2 つの diff のセットを比較します。重複する行が等しくない重複するハンク (おそらく空白の正規化後) は、定義上、競合です。

あなたが解決しなければならない本当の問題は、他のすべてが同じである場合、生成された CSS がこの開発者にとって別の開発者とは異なる理由だと思います。おそらく、彼は異なる (バージョンの) ツールを使用してその CSS を生成し、そのツール (のバージョン情報) はリポジトリの外にあるのでしょうか?

于 2016-10-24T11:59:48.507 に答える