リポジトリの同期
メニューを表示するにはスワイプしてください
前の章で述べたように、ローカルブランチをリモートリポジトリと同期する必要があります。そのためには、git pull コマンドを実行します。
git pull コマンドを実行すると、Git は更新を取得しましたが、ローカルブランチとリモートブランチが分岐していることに気付きました。これは、両方のブランチに変更があり、それらを調整する必要があることを意味します。Git はこれらの違いをどのように処理するかを知る必要があるため、処理を続行できませんでした。merge オプションを設定し、再度 git pull コマンドを実行します。
rebase 操作については、このコースの後半で説明します。
Git はローカルとリモートの README.md の変更を自動的にマージしようとしましたが、マージコンフリクトが発生しました。コミットツリーを確認し、どこで分岐やコンフリクトが発生したかを見てみましょう:
コンフリクトの解決
ご覧の通り、現在のローカルコミットとリモートの main ブランチのコミットは共通の祖先を持っていますが、分岐しており、これがマージコンフリクトの原因となっています。これを解決するために、Vim エディタで README.md ファイルを開きます:
このコンフリクトを解決するには、i キーを押して挿入モードに入り、コンフリクトマーカーを削除し、次のようにこれらの変更を統合します:
次に、Escape キーを押し、:wq と入力してから Enter キーを押すことで、変更内容を保存して Vim を終了します。続いてマージを完了するために、README.md ファイルをステージングエリアに追加し、各コマンドを使ってコミットする必要があります。
git commit コマンドを実行すると、デフォルトのテキストエディタ(通常は Vim)が開きます。デフォルトのコミットメッセージのまま Vim を先ほどと同じ方法で終了するか、メッセージを編集してから終了することもできます。
最後に、git push コマンドを安全に実行し、コミットツリーを表示して三者間マージが正常に完了したことを確認します。
これら2つの章で行った内容を分解してみましょう:
-
README.mdファイルに対して、ローカルとリモートの両方で変更を加えることで、コラボレーションをシミュレーションしました。 -
最初にリモートリポジトリに直接変更をコミットし、その後でローカルで別の変更を行いました。
-
ローカルの変更をプッシュしようとした際、リモートリポジトリに新しい更新があったため、コンフリクトが発生しました。
-
これを解決するために、リモートリポジトリから変更をプルし、マージコンフリクトが発生しました。
-
その後、Vimエディタを使用して
README.mdファイル内のコンフリクトを手動で解決し、解決済みの変更をコミットして、最終的な更新をリモートリポジトリに正常にプッシュしました。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください