GitHub のリポジトリをForkする ①追跡編

2015年4月20日

このサイトでは Visual Studio 2013 で作業する事をベースに記事を書いています。

Visual Studio 2013 に内蔵されている Git はGitHubで言う所の Fork したリポジトリを運用していくオープンソースを主体とした使い方には不向きです。Fork元(upstream)に追従しようとすると、どうしてもコマンドプロンプトで直接 Git コマンドを叩かなくてはなりません。

そこで、このサイトでは SourceTree という Git と Mercurial を使用できるクライアントソフトを使用します。 git-svn も考慮されGUIで扱えるようになってるので、筆者の様に svn を縮小させつつ Git へ移行しようと考えている人にもお勧めできます。履歴や変更点の確認、コンフリクトの解消などは明らかにこちらの方がやりやすいと思います。

SourceTree のインストール

SourceTreeは Git と Mercurial を使用できるフリーのクライアントソフトです。継続して使うにはユーザー登録が必要ですが無料で使用できます。公式サイトからダウンロードしてインストールしておきましょう。

Free Mercurial and Git Client for Windows and Mac | Atlassian SourceTree
http://www.sourcetreeapp.com/

SourceTree のインストールからSSHの設定まで | Planetleaf.com Lab.Planetleaf.com Lab.
https://lab.planetleaf.com/installation-of-sourcetree-with-ssh.html

GitHub のリポジトリをForkする

もしもチームとしてGitHubのリポジトリに参加していて、Commit情報をPushする権限を持っているならば、あなたはForkする必要はありません。これを「共有リポジトリモデル」といいます。これとは別に、他者のリポジトリを自分のアカウントへFork(複製)して、それに対してCommit、Pushを行っていく手法を「Fork & Pull モデル」と言います。Fork自体はGitに内包された機構では無くGitHubが用意したシステムで、これは公式サイトの開発モデルのドキュメントに掲載されています。

Fork自体は至って簡単で、GitHubのアカウントにログインした状態で、ForkしたいリポジトリのURLへ移動してForkボタンをクリックするだけです。

2014-06-23-fork-github-repository

 

Forkで複製されたリポジトリは以下のように表示され、Fork元のユーザーに通知が届きます。
2014-06-23-github-forked-repository-on-user-account

 

作業用のブランチを作成する

Forkしたしないに関わらず、Gitのような分散型バージョン管理システムのリポジトリで作業を進める場合にはmasterブランチを使用しません。作業用のブランチを作成してそこで作業を進める事で、他者の更新作業に影響されることなく作業を進めることが出来ます。この事に関しては「さるでも~」で分かりやすく解説されています。

実際にForkしたリポジトリをローカルにCloneした物を見ていきます。作業ベースがmasterブランチになっているのが分かると思います。

2014-06-23-github-forked-repository-master-branch

ブランチを作成するために、「>ブランチ」を右クリックしポップアップメニューから新規ブランチを選択して新しいブランチを作成します。

ブランチの名前は「my-branch」としました。共有リポジトリで作業する場合等、適宜相応しい名前を付けるようにしましょう。

2014-06-23-git-repository-click-a-branch 2014-06-23-git-repository-create-a-my-branch

作成が終了すると作業ベースがmy-branchに切り替わるので Visual Studio 2013 でプロジェクトを開いて作業をしていきましょう。

同じ設定ファイルを参照しているので Visual Studio 2013 でも作業ベースがmy-branchに切り替わっています。以降、通常のリポジトリと同じようにpushして変更箇所をサーバーへ反映していくことが出来ます。

2014-06-23-git-work-on-local-my-branch 2014-06-23-git-work-on-local-my-branch-onvs2013

 

Fork元のリポジトリを追従する

Forkされたリポジトリは独立していて他者の作業の影響を受けることは有りません。つまり、Fork元(upstream/上流、以後Fork元をupstreamと表記します)が更新されてもFork先の自分のリポジトリは更新されない事になります。プロジェクトに貢献するためには、自分のリポジトリをupstreamに追従しマージした上でPull Requestを送信してupstreamに変更を取り込んでもらう必要があります。

この記事を書いている段階でupstreamは少し更新されているので、それに追従してみる事にします。

2014-06-23-upstream-repository

リモートリポジトリの追加

まずgithubへアクセスし、upstreamのリポジトリのURLをコピーしておきます。

2014-06-23-get-a-url-on-upstrem-account-github
「>リモート」を右クリックしポップアップメニューを開き、リポジトリを追加します。

2014-06-23-forked-repository-select-remote-tag

2014-06-23-forked-remote-repository-setting

リモート名を「upstream」として、URL/パスにURLをペーストして「OK」をクリックします。

2014-06-23-create-upstream-repository-setting

以下のようになれば成功しています。

2014-06-23-upstream-repository-setting-created

リポジトリの追従

続いて、ローカルリポジトリのmasterにupstream/masterを追跡させる設定をします。

2014-06-23-local-master-tracking-upstream

2014-06-23-go-local-master-tracking-upstream

これは設定だけで実際に追従させるには、作業ベースをmasterへ変更してpullを実行する必要があります。

2014-06-23-lets-pull-upstream

これでローカルリポジトリのmasterがFork元であるupstream/masterに追いつきました。あとは作業中のブランチであるmy-branchをmasterとマージすれば、作業中のブランチもFork元に追いつきます。面倒なようですが、それも最初だけです。設定さえ済ませればコマンドの実行だけなので大した作業ではありません。

2014-06-23-upstream-eq-local-master

実際の作業とPull Requestを送るまでの工程は次回解説します。

 

GitGit,GitHub,sourcetree

Posted by redchat