Twitterでブログ更新情報を配信中

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

ローカルでコミット、プッシュできれば、後はリモートからデータの取得(プル)だけになります。

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

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

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

はじめに

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

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

Gitのインストールが終わっていない場合は、こちらの記事を参考にしてください。

【Git】サクッとGitをインストール&セットアップ!Windowsユーザー向けの導入方法

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

【Git】TortoiseGitでコマンド操作なし!Windowsユーザー必見のバージョン管理ツール

ローカルリポジトリ側

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

【Git】リモート&ローカルリポジトリの作り方!はじめての基本操作①

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

【Git】コミット&プッシュでデータの更新!はじめての基本操作②

データを変更

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

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

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

リポジトリの内容を確認

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

データをプル

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

TortoiseGitを選択

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

プルを選択

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

リモートブランチを確認

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

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

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

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

データを変更

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

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

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

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

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

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

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

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

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

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

データをプル

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

競合のアラート

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

エラーコード

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

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

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

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

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

競合解決後のアラート

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

コミットメッセージ

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

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

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

リポジトリの内容を確認

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

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