TL; DR:純粋に理論的な観点からすると、そのファイルは上のすべてで修正されていない場合は、マスターへの分岐の(リベースではない)ことが可能にGitがをマージ中にファイルの競合を報告するためのものですブランチ(マスターから直接作成されたもの)?Git:マージ元で変更されていないファイルにマージ競合がありますか?
デベロッパーのブランチをマスターにマージすると、私の人生の間、私はいつも修正していないことを覚えていないか、開いたことがあるファイルに競合が生じることがよくあります。だから私は十分理解していないGitの仕組みを知りたいと思っています。これは実際には特定の状況下で可能です。そうではなく、不可能な場合は、作業ツリーのいくつかのファイル私に気付かない限り(例:Eclipseのアクションの保存、自動フォーマット、行末処理など)。
私はファイルの競合だけでなく、ツリーの競合や、ファイルの削除や名前の変更や移動を伴う可能性のあることについて話しています。ここで
は(常に最新の状態)のEclipseでEGitを使用して、私の非常にシンプルな典型的なワークフローの例です:が)私は、マスターからのdevのブランチを作成します。 "プッシュアンドプルアップストリームの設定"チェックボックスをオンにし、 "引き出すとき"のリストボックスで "マージ"を選択します(他のエントリは "ベース"、 "リベースベースのマージコミット"、 "ベースベースの対話")。他
誰も、ローカルおよびリモートの、そのブランチにすべてでをコミットされません。私のみ、1台のコンピュータからのみ。
)私はdevブランチをチェックアウトしており、いつか私は毎日自分の変更をコミットします。すべてのコミットは、「コミット」ではなく「コミットとプッシュ」を使用して行われます。なぜなら、すべてのコミットを常にリモートブランチにしたいからです。
「コミットとプッシュ」のプッシュ部分が「拒否 - 早送りではありません」という結果になることがあります。 「プル」を行ってからプッシュ解決策を繰り返すケースでは、プッシュが「早送りしない」ことを避けるためにプルを最初に行う必要があるのが普通です。しかしこれは問題ではありません。
)私のdevブランチをマスターにマージする時が来ています。私は引っ張って元に戻し、マージを選択し、 "Merge options"の下で私のローカルdevのブランチを選択する "私はデフォルトを残す"早送りオプションの下で "スカッシュ"を選択する "早送りの場合は、 (他のオプションは、「早送りの場合はマージコミットの作成」、「早送りの場合は失敗」)。
次に、「結果:競合」が発生します。これらの競合を解決するために、場合によっては、「鉱山」(マスター)の下に赤色で表示されている競合するコードも、彼らの "(私のdevブランチ)は私が書いたものです。このファイルを変更したことのないブランチをマスターにマージすると、これまでどおりにそのファイルを変更することはありませんでした。
私の質問は、純粋に理論的な観点からは、ブランチをマスターにマージする際にGitがファイルの競合を報告することが想定される状況が存在することです。そして、もしそうなら、上記の私のワークフローはそのような状況の1つになりますか?
それはthisの複製ではありません。なぜなら、これはリベースを使用するためです。
われわれは説明できない紛争もしていました。私たちは、この説明のように、私たちがそれを引用したと思います。誰か他の枝に対してコミットしました。このコミットは、他のブランチが旧バージョンの製品である(しかし、まだメンテナンスされている)ため、最新ブランチのコードと互換性がありませんでした。しかし、古いブランチから新しいブランチにマージしてバグ修正を進めるので、古いブランチから現在のブランチにダミーマージが行われ、変更を無視して再実装されました。このマージでは、後で他のブランチにマージされるときに競合が発生しました。 –
@ LasseV.Karlsenありがとう;私はそのような説明が実際には完璧に可能であることを示しているかどうかを知るには熟練していないが、私のブランチをマスターにマージすると、そのブランチで決して変更されなかったファイルに対して競合を起こすが、もっと重要なことに、他のチームメンバーが私の支店ではなく習得することができるものがあるかもしれないことを認識させます。私の支店をマスターに合併すると、これらの説明できない紛争が最終的に発生します。実際に起こっている可能性があるため、この可能性が実際に存在するかどうかを理解しようとします。 – SantiBailors
メインブランチ(あなたの場合はマスター)にマージするとき、特に "-s ours"戦略とマージして "他のブランチからの変更を無視する"と言っています。しかし、後で私たちが**導入したマージ競合を修正するために、このブランチをフィーチャーブランチにマージして最新のものにすると、私たちは特にそうしたい他のブランチからのマージ競合をすべて取り戻しました無視する。この戦略合併の前に作成されたフィーチャーブランチがなくなってしまっても、問題はなくなりましたが、それが持続している間は痛みでした。 –