Gitに入門する -その9-

blog.takanabe.tokyo

ステップ2の「Gitを初めからていねいに」をやる。

「みんなでつかう - ベアリポジトリとクローン,リモートリポジトリ」より。

準備

takashis_workspaceと作成。

$ mkdir takashis_workspace
$ cd takashis_workspace
$ git init

たかしになりすますためにアカウント設定

$ git config user.name Takashi
$ git config user.email takashi@example.com

いつものファイルを作成してコミットしておく。

$ git add cat_lover_said.txt
$ git commit -m cat_lover_said.txtを追加

developmentブランチを作成

$ git branch development

ゆうすけが参戦することになった。
なので、共通のリポジトリを作ることにした。
それはたかしのリポジトリから作ることにした。

リポジトリを複製するには、
git clone <複製元> <複製先>

$ git clone --bare takashis_workspace shared_repo.git
    • bareを付けると、

作業ディレクトリなしでリポジトリだけの複製ができる。
共通のリポジトリで作業することはないので--bareをつけよう。

git clone をすると、クローン元に存在するコミットとブランチを、手元に複製してきます。
このとき、ブランチは「リモートブランチ」としてコピーされてきます。
リモートリポジトリからコピーされてきたブランチなので、「リモートブランチ」です。

ちなみに、リモートブランチはみんなのものなのでそこで作業はできない。
リモートブランチに作業内容を反映させるには、
①リモートリポジトリの、反映したいブランチを「追跡」するためのブランチを手元のリポジトリに作成する
②そのブランチ上で変更を行い、コミットする
③このコミットを、「追跡」しているリモートブランチとリモートリポジトリに反映する


ここからゆうすけ。
まずはプロジェクトのリポジトリを複製する。

$ git clone shared_repo.git yusukes_workspace

ゆうすけアカウントの設定。

$ cd yusukes_workspace
$ git config user.name Yusuke
$ git config user.email yusuke@example.com
$ git graph
* 6ded966  (HEAD -> master, origin/master, origin/development, origin/HEAD) 2015-12-06 Takashi cat_lover_said.txtを追加

リモートリポジトリの確認

$ git remote
origin

これは、リモートリポジトリとしてoriginが登録されている、ということ。


ちょっとわけわかんなくなりそうなのでメモ。

。「リモートリポジトリ」とはなんでしょうか。その説明のために、今回の登場人物(登場リポジトリ?)の整理から始めましょう。今回の共同作業で登場したリポジトリは、みっつです。

・たかしのリポジトリ
・ゆうすけのリポジトリ
・みんなで触るリポジトリ

そして、ゆうすけは、ゆうすけのリポジトリで変更した内容を「みんなで触るリポジトリ」に反映させなければなりません。あるいは、たかしが行った内容を、「みんなで触るリポジトリ」から取得しなければなりません。

こういう、「あのリポジトリにコミット内容を反映させたい」とか「あのリポジトリの変更内容を取得してきたい」というようなことをするためには、「あのリポジトリ」にあたるリポジトリを、「リモートリポジトリ」として登録しておかなければなりません。


次にリモートブランチを追跡するためのブランチを作成する。
git branch <手元のブランチの名前> <追跡したいリモートブランチの名前>

$ git branch development origin/development
Branch development set up to track remote branch development from origin.

こっからたかし。
リモートリポジトリの確認

$ git remote

何もない。
リモートリポジトリを登録してあげよう。

git remote add <リモートリポジトリの名前> <リモートリポジトリ場所>

$ git remote add origin ../shared_repo.git
$ git remote
origin

おk。

$ git graph
* 6ded966  (HEAD -> master, development) 2015-12-06 Takashi cat_lover_said.txtを追加

originのブランチがない。
ので登録してあげよう。

git fetch <リモートリポジトリの名前>

$ git fetch origin
From ../shared_repo
* [new branch]      development -> origin/development
* [new branch]      master     -> origin/master


各ブランチをoriginのブランチを追跡するように設定する。
git branch --set-upstream-to=<追跡したいリモートブランチ> <手元のブランチ>

$ git branch --set-upstream-to=origin/master master
Branch master set up to track remote branch master from origin.

$ git branch --set-upstream-to=origin/development development
Branch development set up to track remote branch development from origin.


以上。
実践は次回。