目次
- はじめに
- 謝辞
- 本書の構成
- サポートページ
第1章:GitHubの世界へようこそ
1.1 GitHubとは
- GitHub社とoctocat
- ただのGitリポジトリのホスティングではない
- GitHubの利用状況
- [column]GitHubとGitの違い
1.2 GitHubを使うと何が変わるのか
- コラボレーションの形が変化する
- 開発者たちが化学反応を起こすPull Request
- 特定のユーザへのコメント
- GitHub Flavored Markdown
- [column]こんな書き方もできる!!
- 他チームのソフトウェアが今まで以上に見える
- オープンソースソフトウェアの世界と同じ開発スタイル
1.3 ソーシャルコーディングとは
1.4 ソーシャルコーディングをするべき理由
- 世界を閉ざさず,多種多様な文化を見よ
- コードを書けるプログラマが求められている
- GitHubの最大の特徴は「人に目を向ける」こと
1.5 GitHubが提供する主な機能
- Gitリポジトリ
- Organization
- Issue
- Wiki
- Pull Request
- [column]GitHubで注目されているソフトウェア
1.6 まとめ
- 参考資料
第2章:Gitの導入
2.1 誕生の背景
2.2 バージョン管理とは
- 集中型と分散型
- 集中型
- 分散型
- 集中型と分散型はどちらが良いか
2.3 インストール
- MacとLinuxの場合
- Windowsの場合
- コンポーネントの選択
- 環境変数の設定
- 改行コードの扱い
- Git Bash
- 本書での環境
2.4 初期設定
- 名前とメールアドレスを設定する
- コマンド出力を読みやすくする
2.5 まとめ
第3章:GitHubを利用するための準備
3.1 利用する前の準備
- アカウントの作成
- アイコンの設定
- SSH Keyの設定
- 公開鍵の登録
- ソーシャル機能の利用
3.2 実際に使ってみよう
- リポジトリの作成
- Repository name
- Description
- Public,Private
- Initialize this repository with a README
- Add .gitignore
- Add a license
- リポジトリにアクセス
- README.md
- GitHub Flavored Markdown
- コードを公開
- 作成したリポジトリをcloneする
- コードを作成する
- コミットする
- [column]公開する際のライセンス
- pushする
3.3 まとめ
第4章:Gitを操作しながら学ぶ
4.1 基本的な操作
- git init──リポジトリを初期化
- git status──リポジトリの状態を確認
- git add──ステージ領域へファイルを追加
- git commit──リポジトリの歴史を記録
- 1行のコミットメッセージを記述する
- 詳細なコミットメッセージを記述する
- コミットを中止する
- コミット後の状態を確認する
- git log──コミットログを確認
- コミットメッセージの1行目のみを表示する
- 指定したディレクトリ,ファイルのみのログを表示する
- ファイルの差分を表示する
- git diff──変更差分を確認
- ワークツリーとステージ領域の差分を確認する
- ワークツリーと最新コミットの差分を確認する
4.2 ブランチの操作
- git branch──ブランチを一覧表示
- git checkout -b──ブランチを作成し,切り替える
- feature-Aブランチに切り替えコミットする
- masterブランチへ切り替える
- 1つ前のブランチに切り替える
- トピックブランチ
- 統合ブランチ
- git merge──ブランチをマージ
- git log --graph──ブランチを視覚的に確認する
4.3 コミットを変更する操作
- git reset──歴史を戻る
- feature-Aブランチを分岐する前に戻る
- fix-Bブランチを作成する
- feature-Aブランチをマージしたあとの状態に進む
- コンフリクト(競合)を解消
- コンフリクト部分を確認し解消する
- 解消した結果をコミットする
- git commit --amend──コミットメッセージを修正
- git rebase -i──歴史を押しつぶして改変
- feature-Cブランチを作成する
- スペルミスを修正する
- 歴史を改ざんする
- masterブランチにマージする
4.4 リモートリポジトリへの送信
- git remote add──リモートリポジトリを登録
- git push──リモートリポジトリへ送信
- masterブランチへ送信する
- masterブランチ以外のブランチへ送信する
4.5 リモートリポジトリから取得
- git clone──リモートリポジトリを取得
- リモートリポジトリを取得する
- リモートのfeature-Dブランチをチェックアウトする
- ローカルのfeature-Dブランチに変更をコミットする
- feature-Dブランチをpushする
- git pull──最新のリモートリポジトリブランチを取得
4.6 さらにGitを奥深く理解するための資料
- Pro Git
- LearnGitBranching
- tryGit
4.7 まとめ
第5章:GitHubの機能を徹底解説
5.1 キーボードショートカット
5.2 ツールバー
- UIの解説
- [1]ロゴ
- [2]Notifications
- [3]検索ウィンドウ
- [4]Explore
- [5]Gist
- [6]Blog
- [7]Help
- [8]アバター・ユーザ名
- [9]Create a new ...
- [10]Account settings
- [11]Sign out
5.3 ダッシュボード
- UIの解説
- (1)News Feed
- (2)Pull Requests
- (3)Issues
- (4)Stars
- (5)broadcast
- (6)Repositories you contribute to
- (7)Your Repositories
5.4 プロフィール
- UIの解説
- [1]ユーザ情報
- [2]Popular repositories
- [3]Repositories contributed to
- [4]Public contributions
- [5]Contribution Activity
- [6]Repositories
- [7]Public Activity
5.5 リポジトリ
- UIの解説
- (1)ユーザ名(組織名)/リポジトリ名
- (2)Watch / Star / Fork
- (3)Code
- (4)Issues
- (5)Pull Requests
- (6)Wiki
- (7)Pulse
- (8)Graphs
- (9)Network
- (10)Settings
- (11)SSH clone URL
- (12)Clone in Desktop
- (13)Download ZIP
- (a)commits
- (b)branches
- (c)releases
- (d)contributors
- (e)Compare & review
- (f)branch
- (g)path
- (h)Fork this project and Create a new file
- (i)files
- ファイルに関する操作
- [column]ファイルを名前の一部から検索する
- 差分の閲覧
- ブランチ間の差分を見る
- 数日前の差分を見る
- 指定日からの差分を見る
5.6 Issue
- 表現力豊かで簡潔な記述方法
- シンタックスハイライトする
- 画像を添付する
- ラベルを付けて整理
- マイルストーンを付けて管理
- [column]貢献するためのルールを知らせよう!
- タスクリスト記法
- コミットメッセージによるIssueの操作
- 関連するIssueにコミットを表示する
- IssueをCloseする
- 特定のIssueをPull Requestに変換
5.7 Pull Request
- [column]diff形式とpatch形式のファイルを取得
- Conversation
- [column]コメントの引用
- Commits
- [column]コメントで絵文字を活用する
- Files Changed
5.8 Wiki
- Pages
- History
- [column]Wikiにサイドバーを表示する
5.9 Pulse
- active pull requests
- active issues
- commits
- Releases published
- Unresolved Conversations
5.10 Graphs
- Contributors
- Commit Activity
- Code Frequency
- Punchcard
5.11 Network
5.12 Settings
- Options
- (1)Settings
- (2)Features
- (3)GitHub Pages
- (4)Danger Zone
- Collaborators
- Webhooks & Services
- Deploy Keys
5.13 Notifications
5.14 その他の機能
- GitHub Pages
- GitHub Jobs
- GitHub Enterprise
- GitHub API
5.15 まとめ
- [column]Macの通知センターでGitHubのNotificationsを確認
第6章:はじめてのPull Request
6.1 Pull Requestの概要
- Pull Requestとは
- Pull Requestの流れ
6.2 Pull Requestを送る準備
- 修正するソースコードを確認
- Fork
- clone
- branch
- トピックブランチで作業する理由
- ブランチを確認する
- トピックブランチを作成する
- コードを追加
- 変更をコミット
- リモートブランチの作成
6.3 Pull Requestを送る
6.4 Pull Requestをより効果的に使う方法
- 開発の途中でも論議するためにPull Requestを送る
- 開発途中であることを明確にする
- ForkせずにブランチからPull Requestを送る
6.5 リポジトリのメンテナンス
- リポジトリのFork,clone
- オリジナルのリポジトリに名前を設定
- 最新のデータを取得
6.6 まとめ
第7章:Pull Requestが送られてきたら
7.1 Pull Requestを取り込む方法
7.2 Pull Requestを取り込む準備
- コードレビュー
- 画像の差分を確認
- 2-up
- Swipe
- Onion Skin
- Difference
- Pull Requestの内容を手元の開発環境に反映
- 受信側のローカルリポジトリを最新にする
- 送信側のリモートリポジトリを取得する
- 確認用のブランチを作成する
- マージする
- ブランチを削除する
- [column]コードマネジメントスキルを伸ばすには
7.3 Pull Requestを取り込む
- メインのブランチにマージ
- 変更をpush
7.4 まとめ
- [column]相互学習の場を作り上げるのに協力してください
第8章:GitHubと連携するツールとサービス
8.1 hubコマンド
- 概要
- セットアップ
- インストールする
- 動作確認する
- エイリアスを設定する
- シェルでの補完を実現する
- ~/.config/hubについて
- コマンド
- hub clone
- hub remote add
- hub fetch
- hub cherry-pick
- hub fork
- hub pull-request
- hub checkout
- hub create
- hub push
- hub browse
- hub compare
- [column]hubコマンドをGitHub Enterpriseに対応する
8.2 Travis CI
- 概要
- 使ってみる
- 設定ファイルを書く
- 設定ファイルに問題がないかチェックする
- GitHubと連携する
- Travis CIの結果をREADMEに追加する
8.3 Coveralls
- 概要
- セットアップ
- サインアップする
- 対象リポジトリを追加する
- 設定ファイルを記述する
- gemを追加する
- レポートを確認する
8.4 Gemnasium
8.5 Code Climate
8.6 Jenkins
- 概要
- インストール
- botアカウントを作成
- botアカウントの権限設定
- 個人アカウントの場合
- Organizationアカウントの場合
- 設定を確認する
- JenkinsへのSSH鍵の設定
- Jenkinsをはじめて利用する場合
- すでにJenkinsを利用している場合
- GitHub pull request builder pluginのインストール
- Git pluginの設定
- Github pull requests builderの設定
- Github server api URL
- Access Token
- Admin list
- ジョブの作成と設定
- GitHub project
- ソースコード管理
- ビルド・トリガ
- ビルド
- 結果の通知
- テストを実行中のステータス
- Failed
- All is well
- commit status
- コメントによるコントロール
- ジョブを実行する
- 「White list」に登録する
- もう一度ジョブを実行する
- コメントする文字を変更する
8.7 まとめ
- [column]CoderwallでGitHubのプロフィールを作成
第9章:GitHubを利用した開発フロー
9.1 チームでGitHubを利用するうえで意識すべきこと
- すべてをシンプルに
- プロジェクト管理ツールとGitHubの違い
- プロジェクト管理ツールとGitHubが異なる理由
- リポジトリをForkしない方法
9.2 GitHub Flow──デプロイを中心にした開発スタイル
9.3 GitHub Flowの流れ
- 常にデプロイ。リリースという概念はない
- 新作業はmasterブランチから新ブランチを作成
- 作成した新ブランチにコミットする
- 定期的にpushする
- Pull Requestを使う
- 必ずほかの開発者からレビューを受ける
- マージ後はすぐにデプロイ
9.4 GitHub Flowを実践するための前提条件
- デプロイ作業は完全自動化する
- デプロイツールを利用する
- Web上でデプロイを実行するツール
- 開発に取り入れる際の注意
- テストを重要視する
- テストを自動化する
- テストを書き,すべてのテストを通過する
- テストコードをメンテナンスする
9.5 GitHub Flowを疑似体験
- Fizzbuzzの仕様
- 新機能を追加
- 新しいブランチを作成
- 新たにcloneする場合
- 以前にcloneしたことがある場合
- トピックブランチを作成する
- 新機能を実装
- Pull Requestを作成
- フィードバックを受ける
- インデントを修正
- テストを追加
- Pull Requestを育てる
- Pull Requestがマージされる
9.6 GitHub Flowをチームで実践するために
- Pull Requestのサイズを小さくする
- 試せる環境を用意する
- Pull Requestへのフィードバックを多くしすぎない
- Pull Requestをためないようにする
9.7 GitHub Flowのまとめ
9.8 Git Flow──リリース中心の開発スタイル
- 理解しやすい標準的な流れ
- 複雑すぎる場合がある
9.9 Git Flowを導入するための準備
- git-flowのインストール
- Macの場合
- Linuxなどの場合
- 動作確認
- リポジトリの初期設定
- リポジトリを作成する
- git flowの初期設定を行う
- リモートリポジトリにもdevelopブランチを作成する
9.10 Git Flowを疑似体験
- masterブランチとdevelopブランチの違い
- masterブランチ
- developブランチ
- featureブランチで行うこと
- ブランチを作成する
- ブランチでの作業を行う
- Pull Requestの送信
- コードレビューでコードの品質を向上
- ローカルのdevelopブランチを更新
- releaseブランチで行うこと
- [column]デフォルトブランチを設定
- ブランチを作成する
- ブランチでの作業を行う
- リリースとマージを行う
- バージョンのタグを確認する
- リモートリポジトリへの反映
- hotfixブランチで行うこと
- ブランチを作成する
- タグの作成とリリースを行う
- hotfixブランチからdevelopブランチへマージする
9.11 Git Flowのまとめ
- [column]バージョン番号の振り方
第10章:会社でGitHubを使おう
10.1 世界標準の開発環境を企業の現場にも
- 会社に導入するメリット
- Organizationを利用
- GitHubのセキュリティを確認
- メンテナンス時間に注意
- 障害情報の確認
10.2 GitHub Enterpriseの検討
- 概要
- 導入のメリット
- 導入のデメリット
- 導入を検討すると良いケース
- 社外にソースコードを置けない
- [column]GitHubのリポジトリをSubversionのリポジトリとして利用する
- メンテナンス・障害時刻をコントロールしたい
10.3 Gitホスティングを実現するソフトウェア
- [column]Bitbucket
10.4 まとめ
Appendix A:GitHubをサポートするGUIクライアント
A.1 GitHub for Mac,GitHub for Windows
A.2 SourceTree
Appendix B:Gistで手軽にコードを共有
B.1 Gistの特徴
B.2 Gistを作成
- UIの解説
- [1]Gist description...
- [2]name this file...
- [3]language
- [4]ACE Editor
- [5]ファイル
- [6]Add Another File
- [7]Create Secret Gist
- [8]Create Public Gist
B.3 Gistを閲覧
- Gistのメニュー
- (1)Gist Detaill
- (2)Revisions
- (3)Download Gist
- (4)Clone this gist
- (5)Embed this gist
- (6)Link to this gist
- ファイルのメニュー