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