#メンテナンスの必要性
Forkやcloneしてきたリポジトリは、装置していればリモートリポジトリに対して古くなってします。ここでは、ローカルリポジトリをいかにして最新に保つかを解説する。
単刀直入に言えば、開発者のローカルリポジトリに、リモートリポジトリとしてオリジナルのリポジトリを設定し、そこにリモートリポジトリを取り込んで(fetch)、自分のリポジトリにマージ(merge)する。こうすることによって最新のソースコードを保つことができる。
#git fetchとは
git fetchとはリモートディポジトリからローカルリポジトリに最新情報をもってきて、ローカルリポジトリが更新されるコマンドのことである。
#git mergeして最新に保つ実践
####手順1:リポジトリをFork,cloneする(最初の一回に限る)
まず、GitHub上でのリモートリポジトリをFork,およびcloneする。
$git clone git@github.com:[ユーザー名]/[ディポジトリ名].git
####手順2:オリジナルのリポジトリに名前を設定
自分のローカルリポジトリ(ここにリモートリポジトリの最新情報が格納される)として、オリジナルのリポジトリを「origin」という名前で設定する。
$git remote add origin git://github.com/{ユーザー名]/[ディレクトリ名].git
####手順3:最新データの取得
最新データをfetchして、自分のリポジトリにmergeする。リポジトリの操作を最新状態にするには、この操作を継続的に行うだけ。
$git fetch origin
$git merge origin/master
もしmergeが上手くいかない場合は
$git merge --allow-unrelated-histories origin/master
をやってみたらいいです。mergeだけでいけないのはGit2.9からmergeコマンドとpullコマンドでは,--allow-unrelated-historiesを指定しない限り,無関係なヒストリを持つ2つのブランチをマージすることはできなくなった。
####手順4:開発していく
これを行うことによってmasterが常に最新状態となる。開発者はブランチを切って開発を進めていく形になる。
#git pullと何が違うの
git pull は上の工程をすべてひとるのコマンドで行う方法である。便利なコマンドである一方で、conflictなどが起きた時に慌ててしまう。そのため、fetchを用いてひとつひとつ作業していくことで安心して作業を進めることができる。