マージ競合を解決するための Git メソッド: 1. 競合しているファイルを編集し、ファイル内の特殊シンボルを削除し、必要に応じてコードを変更します; 2. 指定されたファイルをステージング領域に追加し、指定されたブランチを追加しますトランクに送信してコミットを実行します。git commit コマンドを使用する場合、ファイル名を含めることはできません。ファイル名を追加するとエラーが報告されます。
この記事の動作環境: Windows 10 システム、Git バージョン 2.30.0、Dell G3 コンピューター。
git はマージ競合をどのように解決しますか
git 競合
複数のブランチ コードが 1 つのブランチにマージされると、両方のブランチで同じファイルが変更されます, どこを変更しても生成されます;
同じファイルの名前が 2 つの分岐で変更された場合に生成されるタイプもあります。
原因
ブランチをマージすると、2 つのブランチには同じファイル内に 2 つの完全に異なる変更セットが含まれます。 Git は
に対してどれを使用するかを決定できません。新しいコードの内容は手動で決定する必要があります。
解決策
競合するファイルを編集し、特殊記号を削除し、使用するコンテンツを決定します
一時記憶領域に追加します
送信を実行する (注: 現時点では、ファイル名を指定して git commit コマンドを使用することはできません。ファイル名を追加するとエラーが発生します。送信が成功すると、マージが表示されなくなります)
例は次のとおりです。 :
1. 競合の生成
1.1、トランク ブランチ コード
トランク ブランチには 2 つのファイルがあります
Main.cpp
#include <stdio.h> #include <string.h> int main() { char data[100] = "my branch name is master"; int length = strlen(data); for(int i = 0; i <p> README.md</p> <pre class="brush:php;toolbar:false">this is master branch
このとき、Tom と Jack は main ブランチのコードをプルして修正を加えました。
1.2. トムはコードを変更してマージ用に送信しました
トムはブランチ A を作成し、ファイル
main.cpp
#include <stdio.h> #include <string.h> int main() { char data[100] = "my branch name is A"; int length = strlen(data); for(int i = 0; i ##に次の変更を加えました。 #README.md<p></p> <pre class="brush:php;toolbar:false">this is AAA branchコードを送信してトランクにマージします
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/tom/kaol (A) $ git add . lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/tom/kaol (A) $ git commit -m "A分支代码提交" [A ccb2626] A分支代码提交 2 files changed, 3 insertions(+), 3 deletions(-) lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/tom/kaol (A) $ git push origin A Enumerating objects: 7, done. Counting objects: 100% (7/7), done. Delta compression using up to 12 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (4/4), 376 bytes | 376.00 KiB/s, done. Total 4 (delta 1), reused 3 (delta 1), pack-reused 0 remote: Powered by GITEE.COM [GNK-6.2] remote: Create a pull request for 'A' on Gitee by visiting: remote: https://gitee.com/lingpe/kaol/pull/new/lingpe:A...lingpe:master To https://gitee.com/lingpe/kaol.git * [new branch] A -> A lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/tom/kaol (A) $ git checkout master Switched to branch 'master' Your branch is up to date with 'origin/master'. lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/tom/kaol (master) $ git merge A Updating 40c0115..ccb2626 Fast-forward README.md | 2 +- main.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/tom/kaol (master) $ git push origin master Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 remote: Powered by GITEE.COM [GNK-6.2] To https://gitee.com/lingpe/kaol.git 40c0115..ccb2626 master -> master lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/tom/kaol (master) $1.3. Jack はコードを変更し、マージ用に送信しますjack は次の変更を加えましたコードmain.cpp
#include <stdio.h> #include <string.h> int main() { char data[100] = "my branch name is B"; int length = strlen(data); for(int i = 0; i README.md<p></p> <pre class="brush:php;toolbar:false">this is BBB branchコードを送信してトランクにマージします
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/jack/kaol (B) $ git add . lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/jack/kaol (B) $ git commit -m "B分支代码提交" [B bdcbe03] B分支代码提交 2 files changed, 3 insertions(+), 3 deletions(-) lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/jack/kaol (B) $ git push origin B Enumerating objects: 53, done. Counting objects: 100% (53/53), done. Delta compression using up to 12 threads Compressing objects: 100% (34/34), done. Writing objects: 100% (50/50), 4.66 KiB | 2.33 MiB/s, done. Total 50 (delta 16), reused 43 (delta 12), pack-reused 0 remote: Powered by GITEE.COM [GNK-6.2] remote: Create a pull request for 'B' on Gitee by visiting: remote: https://gitee.com/lingpe/kaol/pull/new/lingpe:B...lingpe:master To https://gitee.com/lingpe/kaol.git * [new branch] B -> B lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/jack/kaol (B) $ git checkout master Switched to branch 'master' Your branch is up to date with 'origin/master'. lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/jack/kaol (master) $ git merge B Updating 40c0115..bdcbe03 Fast-forward README.md | 2 +- main.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/jack/kaol (master) $プッシュ時に競合が発生します
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/jack/kaol (master) $ git push origin master To https://gitee.com/lingpe/kaol.git ! [rejected] master -> master (fetch first) error: failed to push some refs to 'https://gitee.com/lingpe/kaol.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/jack/kaol (master) $2. 競合を解決します 続行次のステップは競合を解決する方法です B ブランチに戻り、トランク ブランチ コードをプルします
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/jack/kaol (B) $ git pull origin master remote: Enumerating objects: 7, done. remote: Counting objects: 100% (7/7), done. remote: Compressing objects: 100% (3/3), done. remote: Total 4 (delta 1), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (4/4), 356 bytes | 178.00 KiB/s, done. From https://gitee.com/lingpe/kaol * branch master -> FETCH_HEAD 40c0115..ccb2626 master -> origin/master Auto-merging main.cpp CONFLICT (content): Merge conflict in main.cpp Auto-merging README.md CONFLICT (content): Merge conflict in README.md Automatic merge failed; fix conflicts and then commit the result.プルが失敗した場合は、競合の原因となったファイルを示すプロンプト メッセージが表示されます。 main.cpp ファイルを直接開くと、次の特殊文字が表示され、競合の原因となっているコード行が示されます。
#include <stdio.h> #include <string.h> int main() { >>>>>> ccb26269f42245dfcbedfbf2218419c5ab7f2787 int length = strlen(data); for(int i = 0; i >>>>>> ccb26269f42245dfcbedfbf2218419c5ab7f2787 return 0; }</string.h></stdio.h>ファイル内で競合を手動で直接解決します。ファイルから特殊文字を削除し、必要に応じてコードを変更します。
#include <stdio.h> #include <string.h> int main() { char data[100] = "my branch name is B and A"; int length = strlen(data); for(int i = 0; i 同様に、README.md の場合は、競合を手動で解決します。 <p></p> <pre class="brush:php;toolbar:false">this is BBB and AAA branch競合を解決した後、ブランチ B にサブミットします
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/jack/kaol (B|MERGING) $ git add . lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/jack/kaol (B|MERGING) $ git commit -m "解决冲突" [B f30e1ea] 解决冲突 lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/jack/kaol (B) $ git push origin B Enumerating objects: 10, done. Counting objects: 100% (10/10), done. Delta compression using up to 12 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (4/4), 405 bytes | 405.00 KiB/s, done. Total 4 (delta 1), reused 0 (delta 0), pack-reused 0 remote: Powered by GITEE.COM [GNK-6.2] To https://gitee.com/lingpe/kaol.git bdcbe03..f30e1ea B -> B lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/jack/kaol (B) $最後にブランチ B をトランクにマージします。そうすると競合はなくなります。
lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/jack/kaol (B) $ git checkout master Switched to branch 'master' Your branch and 'origin/master' have perged, and have 1 and 1 different commits each, respectively. (use "git pull" to merge the remote branch into yours) lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/jack/kaol (master) $ git merge B Updating bdcbe03..f30e1ea Fast-forward README.md | 2 +- main.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/jack/kaol (master) $ git push origin master Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 remote: Powered by GITEE.COM [GNK-6.2] To https://gitee.com/lingpe/kaol.git ccb2626..f30e1ea master -> master lng@DESKTOP-9TD21KL MINGW64 ~/Desktop/jack/kaol (master) $この時点で、競合は発生します。は正常に解決されましたトランク ブランチのコードを確認できます
#main.cpp
#include <stdio.h> #include <string.h> int main() { char data[100] = "my branch name is B and A"; int length = strlen(data); for(int i = 0; i <p>README.md</p> <pre class="brush:php;toolbar:false">this is BBB and AAA branch#OK 推奨される学習: 「
Git チュートリアル
>>以上がgit でのマージ競合を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

GitHubは、GITに基づいた分散バージョン制御システムであり、バージョン制御、コラボレーション、コードホスティングのコア機能を提供します。 1)リポジトリの作成、クローニング、コミット、および変更の作成が基本的な使用法です。 2)高度な使用法には、自動化にGitHubactionsの使用、GitHubpagesに静的Webサイトの展開、セキュリティ機能を使用してコードを保護することが含まれます。 3)競合のマージ、許可の問題、ネットワーク接続の問題などの一般的なエラーは、競合を手動で解決し、倉庫の所有者に連絡し、プロキシを設定することでデバッグできます。 4)ワークフローを最適化する方法には、分岐戦略の使用、自動テストとCI/CDの使用、コードレビュー、およびドキュメントと注釈の維持が含まれます。

GitとGithubは異なるツールです。Gitは分散バージョン制御システムであり、GithubはGitに基づくオンラインコラボレーションプラットフォームです。 GITは、ワークスペース、一時的な保管エリア、ローカルウェアハウスを介してコードを管理し、Gitinit、GitCloneなどの一般的なコマンドを使用します。Githubは、コードホスティング、プルリケスト、発行誘導などの機能を提供します。

GitとGithubは、最新のソフトウェア開発のための重要なツールです。 GITは、リポジトリ、ブランチ、コミット、マージを介してコードを管理するバージョン制御機能を提供します。 GitHubは、問題やPullRequestsなどのコードホスティングおよびコラボレーション機能を提供します。 GitとGithubを使用すると、開発効率とチームコラボレーション機能が大幅に向上する可能性があります。

Gitは2005年にLinus Torvazによって開発された分散バージョン制御システムであり、GitHubは2008年に設立されたGitベースのコードホスティングプラットフォームです。Gitは、スナップショット管理ファイルを介して分岐をサポートし、GitHubはチームコラボレーションを促進するためのプルリクエスト、問題追跡、コードレビュー機能を提供します。

GitとGithubは、最新のソフトウェア開発における重要なツールです。 Gitは分散バージョン制御システムであり、GithubはGitベースのコードホスティングプラットフォームです。 GITのコア機能にはバージョン制御と支店管理が含まれ、GitHubはコラボレーションおよびプロジェクト管理ツールを提供します。 GITを使用する場合、開発者はファイルの変更を追跡して一緒に作業できます。 Githubを使用する場合、チームはPullRequestsや問題を介してコラボレーションできます。

githubisubiscurucialforsoftedevelowmentdueToitsdueToitscompregeCosystemmanagementandcollaboration.itofferSversubactionsandPages.toolslikegithubactionsandpages.startbyMasteringBasicsLikeCreatingReapository、使用、および承認を使用します

GitとGithubは、最新の開発者にとって不可欠なツールです。 1.バージョン制御にGitを使用します。並列開発のためのブランチを作成し、ブランチをマージし、エラーをロールバックします。 2。チームのコラボレーションにはGitHubを使用します:PullRequestを介したコードレビューでマージ競合を解決します。 3.実用的なヒントとベストプラクティス:定期的に送信し、メッセージを明確に送信し、.gitignoreを使用し、コードベースを定期的にバックアップします。

GitとGithubは同じものではありません。Gitは分散バージョン制御システムであり、GithubはGitに基づいたオンラインプラットフォームです。 GITは、開発者がコードバージョンを管理し、分岐、マージ、その他の機能を通じてコラボレーションを実現するのに役立ちます。 GitHubは、コードホスティング、レビュー、問題管理、ソーシャルインタラクション機能を提供し、GITのコラボレーション機能を強化します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ホットトピック









