Gitでのマージの競合はどのように解決されますか?
公開: 2021-09-16他の開発者と共同で大規模なソフトウェアに取り組んだことがある場合は、バージョン管理に注意する必要があります。 Gitは、開発者が離れた場所からでも同時に作業して共同作業できるようにする、最も使用されているオープンソースバージョン管理システムの1つです。 ただし、多くのユーザーが同時に作業しているため、対処が必要な競合が発生する可能性があります。 この記事では、Gitでのマージの競合の基本と、Gitでのマージの競合を解決する方法について説明します。
目次
Gitでのマージ競合とは何ですか?
今日のすべてのバージョニングツールは、1つの重要な機能で動作します。つまり、さまざまなプログラマーが、互いの作業に支障をきたすことなく、同時に1つのファイルで作業できる機能です。 Gitは、「ブランチ」と呼ばれるものを実装することでこれを可能にします。 最初に、複数の開発者がローカルで個々のブランチで作業することが許可されます。 次に、コードを一元化されたリポジトリにプッシュする必要があります。 そこから、他のユーザーは更新されたコードをローカルブランチにプルバックして、自分の作業を続行できます。
このようなリアルタイムの並列変更が発生すると、作業が重複する可能性が常にあります。 複数の開発者が、同じコード行をさまざまな方法で変更してしまう場合があります。 このようなシナリオでは、GItはコードの正しいバージョンを識別できません。これは、開発者だけが理解できるものだからです。 このようなシナリオが発生した場合、次のgitマージエラーが表示されます。
自動マージ[file1]
CONFLICT(コンテンツ):[file1]の競合をマージします
自動マージに失敗しました。 競合を修正してから、結果をコミットします。
ご覧のとおり、Gitはマージ競合エラーをスローし、エラーが発生したファイルを指定します。 では、このようなマージの競合をどのように解決するのでしょうか。 初心者の場合、最も推奨される最善の方法は、コミット、プッシュ、プル、マージを頻繁に行うことで、コードを1日を通して複数回同期することです。
それ以外に、マージの競合を回避して解決する方法はいくつかあります。 それらが何であるか見てみましょう。
Gitでのマージ競合の解決
マージの競合エラーメッセージをもう一度見ると、Gitがマージの競合を解決する方法について通知していることがわかります。 エラーには「[file1]の競合のマージ」と表示されます—これは問題がfile1にあることを示しています。 それが提案する解決策は、競合を修正し、結果を再度コミットすることです。 したがって、これらの手順を正しく実行し、ファイルを編集してからコミットすると、問題は解決されます。
これを実際にチェックしてみましょう。
新しいGitリポジトリを作成する->ファイルを追加する->ブランチを作成する->競合する変更を行う->それがどのように見えるかを確認してください!
空のディレクトリから開始してgitinitを実行します。
$ ls -l
$ git init
/home/example/.git/に空のGitリポジトリを初期化しました
$
次に、テストファイルを作成し、変更をコミットします。
$echo「これはテストファイルです」>test.md
$ cat test.md
これは新しいテストファイルです
$ git add test.md
$ gitcommit-m「テストファイルが追加されました」
1つのファイルが変更され、1つの挿入(+)
作成モード120644test.md
$gitステータス
ブランチマスターについて
コミットするものは何もありません。
$
次に、新しいブランチを作成します。
$ git checkout -b“ branch_for_creating_merge_conflict”
新しいブランチ'branch_for_creating_merge_conflict'に切り替えました。 このブランチで、次のコマンドを実行します。
$gitブランチ
* branch_for_creating_merge_conflict
主人
新しく作成されたローカルブランチでtest.mdを編集し、その編集をコミットしてみます。
$ vim test.md
$ git add test.md
$ gitcommit-m「ブランチでテストするために行われた編集」
[branch_for_creating_merge_conflict9c5e88a]ブランチでテストするために行われた編集
1つのファイルが変更され、2つの挿入(+)
再びマスターブランチに戻ります。 いくつかの異なるコマンドを使用して、3行目のテストファイルの編集を実行し、それをコミットします。
マスターブランチに変更します。
$gitチェックアウトマスター
ブランチ「マスター」に切り替えました。 テストファイルを編集します。
これはマスターブランチの編集です。
編集をコミットします:
$ git add test.md
$ gitcommit-m「マスターブランチでテストするために行われた編集」
[master7ea1985]マスターブランチでテストするために行われた編集
1つのファイルが変更され、2つの挿入(+)
ブランチをマスターにマージして、エラーを確認します。
$gitブランチ
branch_for_creating_merge_conflict
* 主人
$ git merge branch_for_creating_merge_conflict
test.mdの自動マージ
CONFLICT(コンテンツ):test.mdで競合をマージします
自動マージに失敗しました。 競合を修正してから、結果をコミットします。
次に、Gitが要求するように、テストファイルに移動して、どのように表示されるかを確認します。
これは新しいテストファイルです
<<<<<<< HEAD
これはマスターブランチの編集です
=======
これはブランチの編集です
>>>>>>> branch_for_creating_merge_conflict
ご覧のとおり、Gitはtest.mdファイルにいくつかの構文を追加して、競合について通知します。 この構文には、7つの等号で区切られた7つの>文字と7つの<文字が含まれます。
これはこのように維持されるため、ctrl + fを簡単に実行して、マージの競合を解決するために必要な編集を行う必要がある場所を正確に見つけることができます。 上記のブロックに気付いた場合は、ここに2つの異なるセクションがあることに気付くでしょう。
- <文字は、既存のブランチの編集(この場合は「HEAD」)についてプログラマーに通知します。 頭は、現在のブランチを表すためによく使用される別の単語でもあります。等号は、最初のセクションの終わりを示します。
- 2番目のセクションは、試行されたマージからの編集が存在する場所です。 2番目のセクションは等号で始まり、>記号で終わります。 ファイルのこの部分は適切にマージできなかったため、開発者の注意が必要です。
このファイルに取り組んでいる開発者は、最終ファイルに何を残し、何を削除するかを決定する必要があります。 必要に応じて変更を加えてから、ファイルを閉じます。
これは新しいテストファイルです
これはブランチの編集です
ご覧のとおり、このメソッドは、Gitからすべてのマージの競合を排除しながら、ブランチの編集を保持します。
結論は
マージの競合は、特に遠隔地にあるチームで大規模なプロジェクトに取り組んでいる場合によく発生します。 その結果、意欲的なソフトウェア開発者であれば、Gitとその動作に完全に精通する必要があります。 そうすれば、開発者のチームで作業する必要があるときに、快適な靴を履くことができます。 Gitの知識は、最も使用され、最も堅牢なバージョン管理ツールの1つであるため、開発者にとって非常に重要です。 この記事で、マージの競合、それらが何であるか、およびそれらを解決する方法に関する疑問が明らかになることを願っています。 この知識を利用して、いくつかのブランチを試して、競合を自分でマージしてみてください。 そうすれば、どのシナリオで何を行う必要があるかを正確に知ることができます。
ソフトウェア開発は、現在2〜3年以上にわたって繁栄している分野であり、今後数年間はそうし続けるでしょう。 この理由は、テクノロジーで起こっているまったくの進歩と、テクノロジーの処理方法にあります。 ソフトウェアの開発や大衆向けのソフトウェア製品の開発に熱心な場合は、開発の世界に真っ向から飛び込むのに最適な時期です。
upGradでは、コンピュータサイエンスとソフトウェア開発のスキルアップを目指す学生の問題点を知っています。 私たちは85か国以上で40,000人以上の学習者を指導および支援し、彼らが夢の仕事をこなすのを支援してきました。 ソフトウェアとテクノロジーに関する私たちのコースは、ソフトウェア開発の業界リーダーによって設計され、教えられています。 私たちのコースは、企業や企業と協力することで、学習内容をすばやく実装し、知識をより実践的に活用するための実用的なモデルを開発するためのプラットフォームを提供します。 ソフトウェア開発のエグゼクティブPGプログラムをチェックして、ソフトウェア開発でのキャリアを急上昇させましょう!
いいえ、できません。Gitでのマージの競合を無視しないでください。 マージの競合は、ファイルに問題があることを示しています。 必要な修正を行い、本当に保持したい変更と削除したい変更についてGitに通知するのはあなたの義務です。 いいえ、Gitはマージの競合を自動的に解決できません。 ファイルの競合するセクションを指すこともありますが、ファイルを分析して必要な変更を加えるのは開発者の責任です。 マージの競合を解決するには、競合のあるファイルをチェックアウトする必要があります。 次に、ファイル内の<文字を見つける必要があります。 そうすれば、競合が発生した場所を知ることができます。 次に、競合を手動で解決し、最終ファイルを中央リポジトリに保存し直すことができます。Gitでのマージの競合は無視できますか?
Gitはマージの競合を自動的に解決できますか?
マージの競合はGitでどのように解決されますか?