入門Git

概 要

オープンソースの分散型版管理システム「git」の入門書です。gitの開発責任者である著者が、gitを使う上で知っておくべき基本概念と設計理念、歴史を育てていくための基本操作とその背景、育てた歴史の調査方法、パッチベースの開発ワークフロー、gitignore、gitconfig、リモート定義、gitattribute、bisectといったgitの各機構の意味、よく陥る間違い・パニックになりそうな事態からの脱出方法、育てた歴史を公開する方法などを丁寧に解説します。Linus Torvalds氏による「はしがき」付き。

著者 濱野純
価格 本体2200円(税別)
ISBN 978-4-7980-2380-9
発売日 2009/9/19
判型 A5
色数 1色
ページ数 340
CD/DVD
対象読者 中級
シリーズ
表紙イメージ
購入 アマゾンで購入する
楽天で購入する

※リンク先によっては、販売ページが用意されていないことがあります。あらかじめご了承ください。

新しいウィンドウで開く 書籍購入のご案内

サポート

サポート情報は以下からご参照下さい。

サポート情報へのリンク

トークセッション「このコンピュータ書がすごい! 2010年版」

1月9日(土)ジュンク堂池袋店様で開催されたトークセッション「このコンピュータ書がすごい! 2010年版」で『入門Git』をご紹介いただきました。2009年9月度ランキングで1位を獲得しています。

※この動画コンテンツを表示するには最新バージョンの Adobe Flash Player が必要です。Adobe Flash Playerのダウンロード

目次

Chapter 1 gitとは

1.1. gitのおいたち

1.2. 版管理の目的と機能

1.2.1. 以前の状態に戻れる

1.2.2. 変更履歴を調べる

1.2.3. ディレクトリ構造全体を1つの単位として記録する

1.2.4. 「なぜ」と「誰が」を記録する

1.3. 何を版管理するか

1.4. 分散型と集中型

Chapter 2 gitの基本概念

2.1. プロジェクトの状態の記録

2.2. プロジェクトの歴史の記録

2.3. コミット家系図

2.4. ブランチ

2.5. ワークツリーとリポジトリ

2.6. タグ

2.7. インデックスとワークツリー

2.8. コミット家系図とマージ

2.8.1. 3-wayマージ

2.8.2. 3-wayマージの社会的前提条件

2.8.3. 競合する変更のマージ

2.8.4. 3-wayマージによるファイル移動のサポート

2.9. リポジトリの構造

Chapter 3 インストールと初期構成

3.1. パッケージをインストール

3.1.1. Fedora

3.1.2. Debian

3.1.3. MacOS

3.1.4. FreeBSD

3.1.5. Cygwin

3.1.6. msysGit

3.2. ソースから作る

3.3. 初期構成

Chapter 4 独りで使う

4.1. リポジトリの初期化

4.2. 最初のコミット

4.3. 変更を記録する

4.3.1. 最初の変更

4.3.2. git diffで変更を確認する

4.3.3. git addで状態記録することをリクエストする

4.3.4. git diff HEADで変更のすべてを再確認する

4.3.5. git diff HEADとgit diff

4.3.6. git add -uを使う

4.3.7. git commitでエディタを使う

4.3.8. git statusコマンドと.gitignore

4.3.9. git commit -aコマンドを使う

4.4. インデックスを理解する

4.5. 変更履歴を見る

4.5.1. git logを使う

4.5.2. git logのオプションを使う

4.5.3. gitkを使う

4.6. 部分変更を記録する

4.6.1. git add -pを使う

4.6.2. git diff --cachedを使う

4.6.3. git commit -vを使う

4.6.4. git add -Aを使う

4.6.5. git commit を使う

4.6.6. git showを使う

4.6.7. git reset を使う

4.7. 履歴の検索

4.7.1. git logで探す

4.7.2. git log で探す

4.7.3. git log --grep=で探す

4.7.4. git blameで探す

4.8. 変更を取り消す

4.8.1. git revertを使って過去のコミットの効果を打ち消す

4.8.2. git checkout を使ってワークツリーにした変更を取り消す

4.9. 歴史を書きかえる

4.9.1. git reset HEAD^でコミットを捨てる

4.9.2. git reset --hard HEAD^でコミットも変更点も捨てる

4.9.3. コミットをやり直す

4.9.4. git rebase -iで書きかえる

Chapter 5 2か所で使う

5.1. バックアップリポジトリを作る

5.2. 2か所目を準備

5.3. 並行開発した変更のマージ

5.4. タグを付けてリリースを管理する

5.5. コミットを名前で呼ぶ

5.6. git describeコマンド

5.7. git describe --containsコマンド

Chapter 6 グループで使う

6.1. 共用リポジトリの準備

6.2. 共用リポジトリからのclone

6.3. より高度なグループ開発

6.3.1. Peer-to-Peerスタイル

6.3.2. 階層的な共用リポジトリ

6.3.3. リポジトリ構成の比較

Chapter 7 ブランチを使った開発

7.1. ブランチを作る

7.2. ブランチを知る

7.3. ブランチを育てる

7.4. ブランチを切り替える

7.5. より高度なブランチの使用

7.5.1. 後からブランチを作る

7.5.2. 変更を持ったままブランチ間を移動

7.5.3. git stashで変更を横にのける

7.6. トピックブランチを使ったワークフロー

7.6.1. トピックブランチ

7.6.2. 統合ブランチ

7.6.2.1. 統合ブランチの準備

7.6.2.2. バグ修正のワークフロー

7.6.2.3. 新規開発のワークフロー

7.6.3. リリースブランチ

Chapter 8 分散環境とブランチとの関連

8.1. 基本パターン

8.1.1. 基本パターンのステップ(1) ― cloneする

8.1.2. 基本パターンのステップ(2) ― ブランチを使って仕事する

8.1.3. 基本パターンのステップ(3) ― 完成したブランチをまとめる

8.1.3.1. マージしてまとめる

8.1.3.2. リベースしてまとめる

8.2. トピックブランチの部分共有

8.2.1. プロジェクトメンバー間でトピックブランチを共有する

8.2.2. 中央の共有リポジトリでトピックブランチを共有する

8.2.3. プロジェクトメンバー各々が公開リポジトリを持つ

Chapter 9 変更履歴を追いかける

9.1. Linus君の究極の内容追跡

9.2. パス名で制限した履歴検索

9.3. マージを単純化した歴史

9.4. コミットを単純化した歴史

9.5. 行範囲変更の検出

9.6. ファイル名変更やファイル内容コピーの検出

9.7. git blame機能

9.8. git guiやgitwebでのgit blameの使用

Chapter 10 パッチべースのワークフロー

10.1. オープンソース

10.1.1. コミットアクセス

10.2. gitでのパッチベースのワークフローサポート

10.3. レビューされるパッチ

10.4. format-patch

10.4.1. サインオフ

10.4.2. format-patchのその他のオプション

10.4.2.1. コミット範囲の指定

10.4.2.2. ファイル名変更パッチ

10.4.2.3. パッチの添付

10.4.2.4. カバーレター

10.5. send-email

10.5.1. send-emailのオプション設定

10.6. imap-send

10.7. rebase

10.7.1. 受け入れられたパッチを除く

10.7.2. パッチの書き直し

10.7.3. パッチの並べかえ

10.7.4. パッチの合成

10.8. am

10.8.1. 変更競合とam

10.8.2. amでパッチが当たらないとき

10.8.2.1. am -Cオプション

10.8.2.2. パッチを編集する

10.8.3. am --signoff

10.9. オープンな開発プロセス

10.9.1. 新参者から重鎮へ

10.9.1.1. あわてて投稿しない

10.9.1.2. あわてて返答しない

10.9.1.3. 議論を丁寧に組み立てる

10.9.1.4. 結論まで考えてから書く

10.9.2. レビューには素直に応える

Chapter 11 ゴミファイルの無視

11.1. gitignoreが使うファイル群

11.2. gitignoreパターンの書式

11.3. gitignoreを使った例

11.4. 無視の意味を間違えない

11.5. 無視パターンの例外

11.6. 不要なファイルを除くのに無視パターンを使う

11.7. git cleanとそのオプション

Chapter 12 構成変数

12.1. 構成ファイルの場所

12.2. 構成ファイルの文法

12.3. よく使う構成変数のまとめ

12.3.1. core.quotepath

12.3.2. core.autocrlf

12.3.3. core.symlinks

12.3.4. core.bare

12.3.5. core.sharedRepository

12.3.6. core.excludesfile

12.3.7. core.editor

12.3.8. core.pager

12.3.9. core.whitespace

12.3.10. alias.*

12.3.11. apply.whitespace

12.3.12. branch.ブランチ名.*

12.3.13. color.ui

12.3.14. remote.リポジトリ名.*

12.3.15. user.*

Chapter 13 リモートリポジトリ定義

13.1. リモートリポジトリ

13.2. リモート追跡ブランチ

13.3. 2つめのブランチを作る

13.4. 2つめのリモートを定義する

13.5. リモート定義の確認

13.6. 1つだけのリモートブランチを追跡する

13.7. リモート定義とトピックブランチ

13.7.1. トピックをリモート追跡ブランチから分岐する

13.7.2. トピックをローカル統合ブランチから分岐する

13.7.3. トピックへの上流からの変更統合

13.7.3.1. 上流が後になってようやく依存条件を満たした場合

13.7.3.2. 上流とトピックとの間に変更競合がある場合

13.7.3.3. 上流でトピックが必要な機能が削除された場合

13.8. メンテナーのワークフロー

13.9. プッシュ用のURL定義

13.10. リモートリポジトリへのプッシュ定義

13.10.1. プッシュするブランチの明示的な指定

13.10.2. プッシュするブランチの定義

13.10.3. マザーシップと衛星

13.11. 歴史探訪

13.12. ファーストフォワード

13.12.1. ファーストフォワードかどうか検査する

13.12.2. ファーストフォワードでない更新を許す

Chapter 14 ファイルアトリビュート

14.1. 空白との戦い

14.1.1. diff --color

14.1.2. diff --check

14.1.3. pre-commit hook

14.1.4. am --whitespace

14.2. ファイルアトリビュート

14.2.1. アトリビュートの指定

14.2.2. アトリビュートによる空白エラー検知の設定

14.2.3. 検知できる空白エラーの種類

14.3. アトリビュートの他の用法

14.3.1. crlfアトリビュートによる行末記号の設定

14.3.2. diffアトリビュートによるパッチ生成の制御

14.3.2.1. カスタムdiffドライバの定義

14.3.2.2. ハンクヘッダの定義

14.3.2.3. 単語区切りの定義

14.3.2.4. バイナリファイルの比較

14.3.2.5. ファイルレベルのマージをカスタマイズ

Chapter 15 歴史の2分探索

15.1. 2分探索のアイデア

15.1.1. git bisectの流れ

15.2. テストできないコミットをスキップする

15.3. 自動テストスクリプトを使う

15.4. git bisectの限界

Chapter 16 間違いからの回復

16.1. ワークツリーにした間違い

16.1.1. インデックスからチェックアウトする

16.1.2. コミットからチェックアウトする

16.1.3. 先回りした変更を退避する

16.1.4. ローカルな変更のせいでマージが開始されない

16.1.5. ローカルマージの変更とローカルな変更とを区別する

16.2. インデックスにした間違い

16.2.1. 無視の意味を間違える

16.3. ブランチにした間違い

16.3.1. 変更を始めるブランチを間違う

16.3.1.1. トピックブランチを始めて記録し、マージする

16.3.1.2. トピックブランチを始めて記録し、チェリーピックする

16.3.1.3. git stashで退避する

16.3.1.4. git checkout --mergeでブランチをチェックアウトする

16.3.2. detached HEAD上に変更を重ねる

16.4. 歴史にした間違い

16.4.1. git reset --hardで最新のコミットを捨てる

16.4.2. git revertでコミットの効果を打ち消す

16.4.3. git rebase -iで歴史を書きかえる

16.4.4. git resetでブランチの先頭を他の時点に移す

16.4.5. 時刻ベースのレフログ指定

16.5. リモートリポジトリにした間違い

16.5.1. ワークツリーのあるリポジトリにpush

16.5.2. 間違ったコミットをプッシュ

16.5.3. 公表したブランチを間違って巻き戻す

Chapter 17 フックメカニズム

17.1. コマンドの実行を禁止するフック

17.1.1. pre-applypatchフック

17.1.2. pre-commitフック

17.1.3. commit-msgフック

17.1.4. pre-rebaseフック

17.1.5. pre-receiveフック

17.1.6. updateフック

17.1.7. pre-auto-gcフック

17.2. コマンドの実行時に便利なデフォルトを与えるフック

17.2.1. applypatch-msgフック

17.2.2. prepare-commit-msgフック

17.3. コマンドの実行後に報告タイミングを与えるフック

17.3.1. post-applypatchフック

17.3.2. post-commitフック

17.3.3. post-checkoutフック

17.3.4. post-mergeフック

17.3.5. post-receiveフック

17.3.6. post-updateフック

17.4. フックになるもの・ならないもの

Chapter 18 リポジトリの出版公開

18.1. ssh経由のアクセス

18.1.1. updateフックによるアクセス制御

18.2. gitosis

18.2.1. gitosisの管理

18.3. git-daemon

18.3.1. git-daemonのオプション

18.4. gitweb

18.5. http経由のアクセス

18.5.1. HTTP pushサポート

Chapter 19 gitの周辺

19.1. GUIツール

19.2. Webツール

19.3. パッチ管理

19.4. ホスティング

19.4.1. ホスティングツール

19.4.2. ホスティングサイト

19.5. リソース

コラム目次

著者と記録者の関係は?

インデックスの何が嬉しいの?

msysGitでのヒント

ログ検索には修飾語が付きません

ブランチ名はどう付ける?

ブランチを理解するコツ

トピックへの統合ブランチの併合

どうしてファイル名変更検知は-Mなの

優秀なプログラマ程非力なマシンで良い?

"Linus does not scale"

マージはパッチになるの?

原作者の証明書

どうして-p1

Thunderbirdのバグ回避

じゃあhello.c~はどう始末する?

上流からのバグ修正は?

マージベースが2つ以上ある歴史もある

pre-commitフックを回避する

機械に読ませるためのバイナリパッチ

PR

秀和システム