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

リポジトリの同期

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

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

git pull
プルの試行

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

git config pull.rebase false
Note
注意

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

git pull
マージコンフリクト

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

git log --graph --oneline --all
コミットツリー

コンフリクトの解消

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

vim README.md
Vimでのコンフリクト

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

解決済みのコンフリクト

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

git add README.md
git commit
Note
注意

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

マージされたファイルのコミット

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

git log --graph --oneline --all
コミットツリー

これら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