ホームページ >開発ツール >Git >git が競合を引き起こすのはなぜですか?

git が競合を引き起こすのはなぜですか?

WBOY
WBOYオリジナル
2022-06-24 10:38:1710898ブラウズ

git で競合が発生する理由は、ファイルをマージするときに、同じファイルの同じ場所が変更され、コンテンツが異なることです。つまり、送信された 2 つのブランチの同じファイルの同じ場所です。操作がマージされたため、競合が発生しました。競合を引き起こす一般的な操作には、2 つのブランチをマージすることや、リモート ウェアハウス コードをローカルにプルすることが含まれます。

git が競合を引き起こすのはなぜですか?

この記事の動作環境: Windows 10 システム、Git バージョン 2.30.0、Dell G3 コンピューター。

git が競合する理由

1. 一般的な競合操作:

  • 2 つのブランチをマージする

  • #コードをリモート ウェアハウスからローカルの

2にプルします。競合の原因:

ファイルをマージするときに、同じファイルの同じ場所が変更され、内容が異なる場合、競合が発生します。

3.解決手順:

1. git status 競合ファイルを表示します

2.vim src/main/java/a.txt (a.txt が競合ファイルであると仮定すると、ここで必要になります)ファイルのフルパスにする)、競合部分を手動で変更します。

3.git add src/main/java/a.txt 競合が解決されたことを Git に伝えます

4.git commit - m '競合の解決' (競合をコメントとして解決、カスタマイズ可能)

送信された 2 つのブランチの同じ場所にある同じファイルの異なる操作がマージされます。

実践的なデモンストレーション

(1) シナリオ

ローカル ライブラリ内の 2 つの異なるブランチが同じファイルと同じコード ブロックを変更し、その変更をマスター ブランチにマージし、マスター ブランチにマージします。コードを分岐すると、マージ競合というエラーが報告されます。

(2) ローカル ライブラリ

<1>マスター ブランチ

##<2> 2 つのブランチを作成します

<3>2 つのブランチを変更して送信します

aブランチ ブランチ:

b支店ブランチ:

(3) ブランチのマージ時に競合が発生する

Merge aBranch ブランチ (Branch ブランチを現在の master ブランチにマージ):

注:

git merge: デフォルトでは、Git は「高速ファーワード マージ」を実行し、Master ブランチを Develop ブランチに直接ポイントします。

--no-ff パラメーターを使用した後、通常のマージが実行され、新しいノードが Master ブランチに生成されます。バージョンの進化を明確にするために、この方法を採用することをお勧めします。

bBranch ブランチを再度マージすると、競合が発生します:

##mergeTest.txt ファイルの内容:

(4) 競合の解決

現在のブランチ (マスター) で競合ファイルを見つけ、競合コードを直接変更し、追加してコミットします。

注: 簡単な方法です。vim を使用して変更し、cat を使用して競合ファイルを表示します。 (git によって自動的に生成される競合コードの区切り文字を削除するように注意してください)

(5) 競合解決を完了します

注: 送信またはマージすると git が生成されますノード。各ノードはコードのバージョンに対応します。

推奨学習:「Git チュートリアル

以上がgit が競合を引き起こすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。