ざっくりまとめてみました.
ソーシャルコーディングの世界
GitHubとGitの違い
Git
Gitリポジトリというデータの貯蔵庫にソースコード等を入れて利用する.
GitHub
Gitリポジトリを置く場所をインターネット上で提供しているサービス.
バージョン管理とは
ソフトウェアのソースコードを書き足したり,変更したりする過程を記録していき,特定の段階まで戻ったり,誤って消してしまったファイルを復活させたり等の機能を提供する.
GitHubの最大の特徴
GitHubはプロダクトに加えて人にも注目する事が出来る.
その人が他に何をしているのかとか.
GitHubが提供する機能
- Gitリポジトリ
- organization
- Issue
- 1つのタスクを1つのIssueに割り当てて,トラッキングや管理を行える機能.
- Pull Requestが行われると同時にIssueが1つ発行される.
- GitのコミットメッセージにIssueの発行ID(#7とか)を書き加えると,自動的にIssueからコミットに対してリンクが張られる.
- Wiki
- WikiページもGitリポジトリとして管理されているので,改版履歴が見れる.
- PullRequest
- GitHubのリポジトリにpushした変更や機能追加を他の人のリポジトリに取り込んでもらうための要求を出す機能.
- ソースコードの行単位でコメントをつけたり出来る.
GitHubを使ってみよう!
コミットメッセージ
GitHubでは特定のフォーマットに基づいてコミットメッセージを記述するとBTSと同様な機能が使える.
- コミットメッセージにIssueの発行ID(#7とか)を記述すると,そのIssueからそのコミットへのリンクが自動的に張られる.
- オープンされているIssueの対応が終わってクローズしたいときには,次の様にコミットメッセージを記述するとクローズされる.
- fixes 発行ID
- fixed 発行ID
- fix 発行ID
- closes 発行ID
- close 発行ID
- closed 発行ID
GitHub Pages
プロジェクトのWebサイトを公開する目的で静的HTMLのホスティングを行える.独自ドメインの割り当ても可能!!
この機能を使ってブログ書くことも出来る.Octopress
はじめてのPull Request
Pull Requestとは
自分が加えた変更を相手のリポジトリに取り込んで欲しい時にする行為.
PullRequestをすると,送信先のリポジトリにソースコード付きのIssueが発行される.
Pull Requestの効果的な使い方
開発の途中で議論するためにPullRequestする.
ある程度イメージ出来るレベルのコードを書いてPullRequestを送信すると,まわりの人からフィードバックをもらえる事が出来る.
気付いてなかった事を指摘されたり,書こうとしていたコードが他のメンバーと重複している事に気づく事によって,質の高いコードになっていく.
忘れてはならないのが Pull Requestはブランチ単位で送られる ということ.
- 最初の議論するきっかけとしてコードを書きコミットする.
- Pull Requestを送信する.
- オープンされたPull Reqeustで議論とコミットを積み重ねる事によってブランチを育てる.
- 新しい機能がよりよい状態で完成し,そのブランチがマージされる.
ForkせずにブランチからPull Requestを送る.
そもそも相手のリポジトリにブランチを作る権限を持っているのであれば,ForkせずにPull Requestを送るのもアリ!!
Pull Requestが送られてきたら!?
Pull Requestが取り込む準備
コードレビュー
GitHubでは送られたきたPull Requestに関してコードレビューを行える.
GitHubではコード差分だけではなく,画像の差分まで表示できてしまう!
手元の開発環境にPull Requestの内容を反映させる.
- Pull Requestを受信した側のリポジトリをcloneする.
- 手元のリポジトリに対して,Pull Request送信側のリポジトリをリモートリポジトリとして登録してデータを取得する.
$ git remote add PullRequest送信者 git@github.com:PullRequeest送信者/リポジトリ名 $ git fetch PullRequest送信者
- マージ用のブランチを作成する.
- Pull Requestを取り込んだ状態を再現するためのブランチを作成する.
GitHubと連携して活躍するプロダクト
Travis CI
TravisCIはオープンソースコミュニティ向けのCIを無料でホスティングしてくれるサービス.
リポジトリを関しさせておいて,開発者がコミットした瞬間に自動的にテストやビルドを実行する.
Coderwall
CoderwallはGitHubのリポジトリ情報等を基に開発者のプロフィールを生成するサービス.