Tool

サーバへのプッシュとプル [Git]

Gitで行ったコミットなどの操作はローカルリポジトリに対するものです。ファイル管理を他の人と共有するにはサーバ上のリモートリポジトリを利用しなければなりません。そのための方法について説明をします。
Tool

Gitのコミット操作はローカルPC上のローカルリポジトリに対して行われます。
これをサーバ上のリモートリポジトリにアップロードして他のメンバーと共有するにはリポジトリの「プッシュ」を行います。逆にリモートリポジトリの内容をローカルに反映させるには「プル」を行います。

リポジトリのプッシュ

  1. プッシュダイアログリポジトリを設置したフォルダを選択して、右クリックメニューで[Gitプッシュ]を選びます。
  2. ローカルで作成したリポジトリの場合は、プッシュする「宛先」が設定されていません。[管理]をクリックして宛先サーバ(リモート)を追加します。設定内容はサーバ管理者などに問い合わせてください。
  3. [OK]をクリックしてリポジトリをプッシュします。

リモートリポジトリのファイルがすでに他の人に更新されている場合には変更内容が競合してプッシュすることができません。このときにはいったんリモートリポジトリをプルしてローカルリポジトリの内容を更新してから、あらためてプッシュします。プルしたときに変更内容の競合をマージする必要がありますので注意して作業を行ってください。

リポジトリのプル

  1. プルダイアログリポジトリを設置したフォルダを選択して、右クリックメニューで[Gitプル]を選びます。
  2. 設定ダイアログが表示されるので[OK]をクリックしてリポジトリをダウンロードします。
プルに似た操作に「フェッチ」があります。プルではリモートリポジトリの変更内容がダウンロードされた後自動的にローカルリポジトリにマージ、コミットされますが、フェッチではダウンロードまでしかされません。ローカルファイルは変更された状態になるので内容の確認や競合のマージなどをしてから、自分でコミットする必要があります。変更の競合がおきる可能性があるときにはプルよりもフェッチの方が安全かもしれません。

ローカルリポジトリとリモートリポジトリの間で同期をとろうとするとき変更内容の競合が起きてしまうことは珍しくありません。たとえばあなたがリモートリポジトリの内容を取得してローカルで変更を加えたとします。その直後に別の人が同じようにリモートリポジトリから内容を取得し、変更してから直ちにプッシュしたとします。あなたが自分の変更内容をプッシュしようとしても、そのファイルはすでに別の人に更新された後です。あなたの変更は古いファイルをベースに行われていますから、もしそれをプッシュしてしまえば別の人の変更は失われてしまいます。

これが「競合」している状態です。

競合を解決するためには別の人の変更を失わないように注意しながら、あなたの変更を反映するしかありません。このような作業を「マージ」と呼びます。テキストファイルの場合マージが自動的に行われることもありますが、多くの場合は面倒な手作業が必要となります。

競合を避けるための基本的な方法は、ローカルでの作業の時に自分専用の「作業ブランチ」をつくることです。作業ブランチで作業している限り別の人と競合することはありません。作業ブランチを本流に戻すためにマージが必要ですが、このような運用方法をルール化しておけばトラブルは最小限に抑えることができます。

ブランチ、マージについては別の項目で説明しています。また以下のサイトも参考にしてください。

 

その他のエントリー