Githubで誰かのリポジトリをforkしたらどうするかのメモ

最近rhaco2で遊ぶ時間がちょっと出来つつあるので、ドキュメントを書ける状態にはしておこうというのが、Github登録の理由だったりします。
なので、まずはrhaco2-docをforkしました。

fork元
GitHub - riaf/rhaco2-doc: TODO: rhaco2 の解説的なものをちまちまと書く
forkした自分の
http://github.com/kanonji/rhaco2-doc

で、どうやって自分の開発環境にローカルリポジトリ作るんだろうという事でちょっとだけ悩みました。

ローカルリポジトリを作る


この様に、自分のリポジトリには「Your Clone URL」と「Public Clone URL」があります。
他の人のリポジトリを見ると「Clone URL」だけしかなく、これは「Public Clone URL」と同等です。


※ユーザー名とかリポジトリ名とか、適当に読み替えてください。

Public Clone URL
git://github.com/kanonji/rhaco2-doc.git
Your Clone URL
git@github.com:kanonji/rhaco2-doc.git

git:// なのか git@ なのかの違いがあります。

git clone git@github.com:kanonji/rhaco2-doc.git

git clone でローカルリポジトリが作れます。
「Your Clone URL」の場合は、sshを介するため予めGithubに登録した公開鍵と合う秘密鍵が必要です。
「Your Clone URL」からcloneした場合は git push ができ、「Public Clone URL」からの場合は git push は出来ません。
他人のリポジトリなので当然ですが。


ローカルリポジトリで開発を進めて、公開してもいい状態になったら git push します。
forkして出来た自分の公開リポジトリに反映されます。
fork元に取り込んで欲しいものが出来たら、ここらを参考に pull request を出す。
http://github.com/guides/pull-requests

実際に git clone git@〜〜 してみた
$ git clone git@github.com:kanonji/rhaco2-doc.git
Initialized empty Git repository in /Users/kanonji/Dev/git/rhaco2-doc/.git/ #秘密鍵にパスフレーズがある場合、この次で入力。
remote: Counting objects: 30, done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 30 (delta 7), reused 30 (delta 7)
Receiving objects: 100% (30/30), 5.09 KiB, done.
Resolving deltas: 100% (7/7), done.
$ cd rhaco2-doc/                                                            #Github上のリポジトリ名でディレクトリが作られます。
$ git config -l
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=git@github.com:kanonji/rhaco2-doc.git                     #originという名前で、Github上のリポジトリがリモートブランチとして登録されています。
branch.master.remote=origin
branch.master.merge=refs/heads/master

forkは後にしてまず開発をする方法もある

github で人のコードをいじる「前」にforkする必要はない - Bulknews::Subtech - subtech

「Clone URL」から git clone をしてローカルリポジトリを作り、元にマージして欲しくなってからforkする方法のようです。
forkした自分のリポジトリにpushするために git remote add myfork git@〜〜 とかやってから git push myfork master といった感じでやるみたい。

その他の参考

forkしてたけど、その後fork元のコミット権を貰った場合
githubでforkしたリポジトリから本家にpush - はこべにっき ♨
pull requestを貰った場合
githubでpull requestもらったのでmergeしてみる - 狐の王国