web-dev-qa-db-ja.com

Gitマージの競合はどのように発生しますか?

Gitリポジトリを作成し、テキストファイルを追加しました。これは学習目的の場合は100%です。

  1. テキストファイルに「1」を追加し、マスターにコミットしました。

  2. マスターから新しいブランチを作成し、「2」を追加しました。

  3. 最後に、マスターからブランチを作成し、「3」を追加しました。

このシナリオまたは他のシナリオで競合がどのように発生する可能性があるか説明してください。

35
user3693167

マージすると競合が発生します。

  • branch2からmaster(競合なし)
  • branch3からmaster(競合):

それは:

  • 共通の祖先はmaster(2行目は空)です
  • ソースコンテンツはbranch3(「3」を含む2行目)
  • 宛先コンテンツは最新のmasterにあります(branch2master

Gitは、保持するコンテンツ(「3」、「2」、またはその両方)を選択するように求めます。

まず、次の後にマージを実行します。

git config merge.conflictstyle diff3

Gitでマージの競合を修正しますか? 」を参照してください。

28
VonC

2つのブランチの両方がファイルの同じ領域を変更し、その後マージされると、マージの競合が発生します。 Gitはどの変更を保持するかを知ることができないため、競合を解決するには人間の介入が必要です。

この場合、手順2と3は、変更が競合する2つのブランチを作成します。

32
Caleb