2014年1月20日月曜日

【連載Git入門 第5回】SourceTreeでGitを始めよう!リモートリポジトリを使ってみよう

Git初心者の方を対象とした入門記事を連載しています。
連載目次:【連載Git目次】ほんとは簡単?SourceTreeでGitを始めよう!
前回:【連載Git 第4回】マージの競合

前回までの内容は各自のPCの中で完結していました。
今回はインターネット上にリポジトリを作成し、利用する方法を説明します。

※先に断っておきますがこの記事長いです…やりながらだと1時間かかるかも?

リモートリポジトリを使ってみよう

リモートリポジトリとは?

リモートリポジトリの説明に入る前に、ローカルリポジトリをおさらいしましょう。
第2回の記事で作成したリポジトリはローカルリポジトリと呼ばれます。
図にするとこんなイメージですね。
このように自分のPC内にあるリポジトリのことを「ローカル」リポジトリと呼びます。

これに対して「リモート」リポジトリは、インターネット上に作成するリポジトリのことです。
ローカルリポジトリの内容をリモートリポジトリに保存したり、
逆にリモートからローカルに取り込んだりすることができます。

では、実際にやってみましょう。

BitBucketのアカウント登録

リモートリポジトリを作れるサービスはいくつかあります。
自分が知ってるのはGitHubやBitBucket、CodeBreakなど。
たぶん他にもあります。

その中でも今回は、SourceTreeと同じ会社が運用している
BitBucketというサービスを使ってみます。
(もちろん無料です。チーム6名以上は有料ですが)
以前登録方法をまとめたことがあったのでこちらの記事もどうぞ。
Bitbucketのアカウントを作成する。

リモートリポジトリの作成

※Macならリモートリポジトリの作成は全てSourceTreeから行えます。
※Windowsの場合は一部BitBucketでの操作が必要です。(2014/01/20時点)

すでにローカルリポジトリがある前提で説明します。
前回の記事のリポジトリ(testRepository)が残っている場合はそれを開いておきましょう。

前回まで使っていたtestRepositoryを開きます。
設定->リモート->追加
地球マークをクリック
(Windowsにはこのボタン無いです。後ほど説明する方法を使ってください。)

※初回のみ BitBucketアカウント追加を行います。
追加ボタンからBitBucketアカウント情報を登録

ここで入力するユーザー名はBitBucketのWebサイトから確認できます。
正しくBitBucketアカウントが表示されればOKです。

新規リポジトリの作成からリポジトリ情報を入力します。

このとき”公開する”のチェックを必ず外してください。
※外さないとインターネット上の誰でもソースが見れる状態になります。
この画面の作成ボタンを押した時点で、BitBucket上にリモートリポジトリが作成されています。(BitBucketのWebから確認できます。)

作成されたリポジトリを選択
SourceTree上で表示する名前を入力してOK
リモートリポジトリ情報が追加されているのを確認してOK

これでSourceTree上にリモートリポジトリが表示されました。

Windowsの場合

WindowsはSourceTreeから直接BitBucket上のリモートリポジトリを作成できません。
BitBucketのWebサイトでリポジトリを作成してから、
地球マークのボタンを押すステップでURLを入力します。

BitBucketでリポジトリ詳細画面に入り、ブラウザのURLに".git"をつけるだけでいける…はず?(ちょっと未確認です)
上記の場合「https://bitbucket.org/naichilab/testrepository.git」ですね。

プッシュしてみよう

ローカルリポジトリのコミット内容をリモートリポジトリに書き込むことを
「プッシュ」と言います。

やってみましょう。

プッシュ->書き込むブランチを指定->OK

グレーの矢印()を持ったタグが追加されました。
この矢印()はリモートリポジトリ上のブランチの最新版を表します。
今はプッシュした直後なので、全てのブランチの最新版がローカルとリモートで一致しています。

では試しにmasterブランチをチェックアウトし、何か変更を加えてコミットしてみましょう。
ローカルmasterとリモートmasterがズレましたね。
さらに「1 ahead」と表示されています。
これはプッシュできるコミットが1つあるよ。って意味です。
この進んだ分はまだリモートリポジトリに書き込まれていません。
バックアップとしてリモートリポジトリを使うのであれば、
こまめにプッシュするようにしましょう。

では再度プッシュしてから次へ進みます。

クローンしてみよう

リモートリポジトリからからデータを引き取り、そのままローカルリポジトリを作成する
ことを「クローン」といいます。
さきほどプッシュしたデータを取り込みながら新しいローカルリポジトリを作ってみましょう。

リポジトリ一覧から
リポジトリ追加->クローン->地球マークからリモートリポジトリを選択->保存先を指定->クローン

追加されたリポジトリを開くとこんな感じになってるでしょうか?
・ローカルブランチはmasterのみ、リモートブランチはmaster,sub,HEADの3種であることに注意してください。
・リモートHEADブランチはクローン時に勝手にできるので無視していいです。
・HEADを除くリモートブランチがさきほどプッシュしたものと一致していることを確認しましょう。

デフォルトでmasterブランチがローカル側にも存在し、リモートの最新と一致しています。masterブランチを使って作業を進める場合はこのまま続けましょう。
ですがもしsubブランチで作業を継続したい場合はどうでしょうか?
ローカルsubブランチが存在しないですよね。
これを作成する必要があります。

作ってみます。

リモートsubブランチをダブルクリック
自動的にブランチを切る画面になるのでブランチ名を決めてOKを押す
これだけでローカルブランチができました。あとは今まで通り作業できます。


※ここから先(プルとフェッチまで)の内容は下記に該当する場合に使う機能です。
 ・チームで開発したい
 ・個人だが2台以上のPCで作業する
 該当しない方は無理に覚える必要ありませんので飛ばしてください。

次の項目に移る前に、下記手順に従ってクローンしたリポジトリからプッシュしてください。

手順は
・testRepository2(クローンした新しいリポジトリ)で
・作業フォルダのファイルを変更(チェックアウトブランチは何でもいいです)
・ローカルリポジトリに追加&コミット
・リモートリポジトリに全てのブランチをプッシュ

subブランチでコミット&プッシュしたところこんな感じになりました。

では次の項目に移ります。

プルとフェッチ

リモートからローカルへデータを取ってくる方法はクローンだけではありません。
クローンの他にプルとフェッチという方法があるのですが…

はい、今すぐプルは忘れましょう
同じことはフェッチ&マージでできるのでフェッチだけ説明します。

先ほど下記手順を踏みました。
  1. testRepositoryからプッシュ
  2. クローンしてtestRepository2を作成
  3. testRepository2からプッシュ
図にするとこんな感じ。
testRepositoryが知っているのは①時点のリモートリポジトリ(のコピー)です。
でも本物のリモートリポジトリはすでに③になっていますね。
最新のリモートリポジトリを取得し、コピーを差し替えるのがフェッチです。
フェッチで変更されるのはあくまでも”リモートリポジトリのコピー”のみです。
ローカルリポジトリやローカルブランチには影響しないので安心してください。

ではやってみましょう。

testRepositoryを開いてください。

※もしポップアップが出て「プルできます。」と言われ
 下記アイコンが表示されても絶対に押さないでくださいね。
フェッチとマージで解決できますから。

フェッチ->OK
これだけでリモートリポジトリのコピーが更新され、③と同期されました。
今度はローカルsubとリモートsubがズレましたね。
ローカルsubの横に「1 behind」と表示されています。
これはリモートブランチに比べてローカルブランチの方が1つ遅れてるよ。
ということです。
他人(他リポジトリ)が更新したデータをフェッチしたよってことですね。

解決するには
・ローカルブランチをチェックアウト
・リモートブランチをマージ
これだけです。

マージ後はこんな感じ。
ローカルsubとリモートsubが一致しましたね。
他人がプッシュした内容をローカルリポジトリに取り込めたということです。

もしここでマージの競合が起きちゃったら…
面倒ですがプッシュした人と話し合いましょう!

まとめ

今回はリモートリポジトリを使ってみました。

リモートリポジトリを使う目的ごとに
最低限覚えなきゃいけない機能を整理しましょう

個人でバックアップ用途で使う場合

  • コミット
  • チェックアウト
  • (ブランチ、マージ)使えると便利
  • プッシュ
  • クローン

複数PC、もしくはチームで使う場合

  • コミット
  • チェックアウト
  • ブランチ
  • マージ
  • プッシュ
  • クローン
  • フェッチ

こんな感じですかね。
チームの場合は競合が起きないような運用も必要です。


さて、ここまで5回に渡ってGitの機能を説明してきました。
これで大体の機能は説明できたかなと思います。

ここまで理解されればもうほとんど不自由なく使っていただけるかと思います。
是非紹介した BitBucket + SourceTree で快適なGit生活を送ってください。

次回以降は運用編です。
UnityプロジェクトをGitで管理する方法や、
チームで利用する際の注意点なんかを考えてみます。

ここまで読んでいただきありがとうございました。

スポンサーリンク

Related Posts Plugin for WordPress, Blogger...