Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ リポジトリの同期 | より高度なワークフロー
GitHubの基礎

bookリポジトリの同期

メニューを表示するにはスワイプしてください

前の章で述べたように、ローカルブランチをリモートリポジトリと同期する必要があります。そのためには、git pull コマンドを実行します。

git pull コマンドを実行すると、Git は更新を取得しましたが、ローカルブランチとリモートブランチが分岐していることに気付きました。これは、両方のブランチに変更があり、それらを調整する必要があることを意味します。Git はこれらの違いをどのように処理するかを知る必要があるため、処理を続行できませんでした。merge オプションを設定し、再度 git pull コマンドを実行します。

Note
注意

rebase 操作については、このコースの後半で説明します。

Git はローカルとリモートの README.md の変更を自動的にマージしようとしましたが、マージコンフリクトが発生しました。コミットツリーを確認し、どこで分岐やコンフリクトが発生したかを見てみましょう:

コンフリクトの解決

ご覧の通り、現在のローカルコミットとリモートmain ブランチのコミットは共通の祖先を持っていますが、分岐しており、これがマージコンフリクトの原因となっています。これを解決するために、Vim エディタで README.md ファイルを開きます:

このコンフリクトを解決するには、i キーを押して挿入モードに入り、コンフリクトマーカーを削除し、次のようにこれらの変更を統合します:

次に、Escape キーを押し、:wq と入力してから Enter キーを押すことで、変更内容を保存して Vim を終了します。続いてマージを完了するために、README.md ファイルをステージングエリアに追加し、各コマンドを使ってコミットする必要があります。

Note
注意

git commit コマンドを実行すると、デフォルトのテキストエディタ(通常は Vim)が開きます。デフォルトのコミットメッセージのまま Vim を先ほどと同じ方法で終了するか、メッセージを編集してから終了することもできます。

最後に、git push コマンドを安全に実行し、コミットツリーを表示して三者間マージが正常に完了したことを確認します。

これら2つの章で行った内容を分解してみましょう:

  1. README.md ファイルに対して、ローカルリモートの両方で変更を加えることで、コラボレーションをシミュレーションしました。

  2. 最初にリモートリポジトリに直接変更をコミットし、その後でローカルで別の変更を行いました。

  3. ローカルの変更をプッシュしようとした際、リモートリポジトリに新しい更新があったため、コンフリクトが発生しました。

  4. これを解決するために、リモートリポジトリから変更をプルし、マージコンフリクトが発生しました。

  5. その後、Vimエディタを使用して README.md ファイル内のコンフリクトを手動で解決し、解決済みの変更をコミットして、最終的な更新をリモートリポジトリに正常にプッシュしました。

question mark

git pull 実行時にリベースではなくマージを使用するようにGitを設定するコマンドはどれですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  2

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  2
some-alt