【 更新 】おすすめ記事はこちら

【Git】プル・マージでデータの取得と統合!はじめての基本操作 #03

ローカルで「コミット」「プッシュ」できれば、後はリモートから「プル」でデータを取得するだけです。

また「Git」にはファイルの差分を補う機能があり、万が一、同じ場所を編集しても「競合」を知らせてくれます。この場合は、いずれかのコードを手動で「マージ」し統合する必要があります。

  1. リモートのファイルを変更
  2. ローカルでデータをプル(競合なし)
  3. ローカルでデータをプル・マージ(競合あり)

このような流れで進めていきます。さっそくはじめましょう!

はじめに

今回使うGitの専門用語を表にまとめました。用語と意味を覚えて読み進めてください。

用語読み方意味
pullプルデータをダウンロード
mergeマージデータを統合

「Git」のインストールが終わっていない場合は、こちらの記事をご覧ください。

今回はGUIでの操作となります。視覚的に見える形で進められる「Tortoise Git」がおすすめです。

ローカルリポジトリ側

分かりやすいようにリポジトリを2つ用意します。一つを「リポジトリA」、もう一つを「リポジトリB」とします。作り方はこちらの記事をご覧ください。

前回の内容はこちらの記事をご覧ください。

データを変更

「リポジトリB」のデータには、以下を追記します。最終的にプルするので「プル1回目」と入力し「コミット」します。

サンプル用のデータです。任意でここに追加します。

「プッシュ」後、念のためリモートリポジトリの内容を確認しましょう。

リポジトリの内容を確認

ローカルリポジトリ側(競合なし)

データをプル

編集していない最初のリポジトリに戻ります。これを「リポジトリA」とします。フォルダを右クリックし「TortoiseGit」を選択。

TortoiseGitを選択

つづいて「プル」を選択。

プルを選択

ダイアログのリモートは「origin」、リモートブランチは「master」であることを確認します。その他のオプションは変更せず「OK」をクリック。

リモートブランチを確認

青色で成功と表示されたら完了です。「data.txt」を開き、Bと同じ内容であればOKです。

サンプル用のデータです。任意でここに追加します。

ローカルリポジトリ側(競合あり)

同じ箇所を編集していた場合の対処方法をご紹介します。データを統合するこの作業を「マージ」といいます。同じファイル内でも、同じ箇所を編集していなければ競合は起きません

データを変更

「リポジトリA」のテキストを「サンプル用のデータ」から以下に変更します。

サンプル用のテキストです。任意でここに追加します。

「テキスト変更A」のメッセージでコミットします。プッシュはしないでください。

テキスト変更Aをコミット

「リポジトリB」のテキストを「サンプル用のデータ」から以下に変更します。

サンプル用のファイルです。任意でここに追加します。

「テキスト変更B」のメッセージでコミットします。こちらはプッシュしてください。

テキスト変更Bをコミットしプッシュ

念のためリモートリポジトリの内容を確認しましょう。

リモートリポジトリの内容を確認

データをプル

データを「プル」すると、競合している旨のダイアログが表示されます。

競合のアラート

同じようにエラー表示されているダイアログを閉じます。

エラーコード

「リポジトリA」のファイルを開くと以下のような表記が追加されます。=======より上がローカル、=======より下がリモートの内容となります。

<<<<<<< HEAD
サンプル用のテキストです。任意でここに追加します。
=======
サンプル用のファイルです。任意でここに追加します。
>>>>>>> p8ifpg2mnwautfvnbkseepfv5gxyjw9t6k76ev9e

どちらかを選んで追加したいテキストだけに編集し直します。

サンプル用のテキストです。任意でここに追加します。

「コミット」すると、以下のようなダイアログが表示されます。OKで閉じます。

競合解決後のアラート

既にメッセージが入力されていますが、変更して問題ありません。「テキスト競合解消A」とします。

コミットメッセージ

今回は削除した行が2行になっていますね。チェックを入れて「コミット」しましょう。

チェックを入れてコミット

最後にプッシュし、リモートリポジトリの内容を確認してください。

リポジトリの内容を確認

リモートからのデータを「競合あり」「競合なし」とで分けて取得しました。今回は「プル」したときにエラーが出ましたが、「プッシュ」でも同じことが起こります。ただし表記などは追加されず、単純に「プッシュ」できない状態となります。

その際はリモートから「プル」した上で競合を解消し、「コミット」「プッシュ」することで解決できます。手順を踏んだにもかかわらず「プッシュ」できないときは試してみてください。