オープンソースの分散バージョン管理システム「Git」の解説書。Gitには、開発および共同作業を進めるうえで便利な機能が数多く実装されています。しかし、その柔軟性の高さが原因でGitをどのように使うのが最も効率的か十分に理解していないユーザーが多いのも事実です。本書ではGitを使ってソフトウェアの開発プロジェクトを追跡、マージ、管理する方法をステップバイステップで明解かつ丁寧に解説します。読者はGitが持つ多くの機能を効率よく使えるようになるでしょう。日本語版では、Gitで日本語を利用する方法、Gitベースの開発プロジェクト用ホスティングサービスであるGitHubについての解説を加筆しました。
実用 Git
Jon Loeliger 著、吉藤 英明 監訳、本間 雅洋、渡邉 健太郎、浜本 階生 訳
- TOPICS
- Programming
- 発行年月日
- 2010年02月
- PRINT LENGTH
- 372
- ISBN
- 978-4-87311-440-8
- 原書
- Version Control with Git
- FORMAT
目次
目次 監訳者まえがき まえがき 1章 はじめに 1.1 背景 1.2 Gitの誕生 1.3 Git以前の事例 1.4 Gitの歴史 1.5 名前に含まれた意味 2章 Gitのインストール 2.1 Linuxのバイナリでの配布 2.1.1 DebianまたはUbuntu 2.1.2 その他のバイナリ配布 2.2 ソースリリースの入手 2.3 ビルドとインストール 2.4 WindowsでのGitのインストール 2.4.1 CygwinのGitパッケージをインストールする 2.4.2 スタンドアロンなGit(msysGit)のインストール 3章 Git入門 3.1 Gitのコマンドライン 3.2 早わかりGit 3.2.1 初期状態のリポジトリを作成する 3.2.2 ファイルをリポジトリに加える 3.2.3 コミット作成者を設定する 3.2.4 さらにコミットする 3.2.5 コミットを見る 3.2.6 コミットの差分を見る 3.2.7 リポジトリ内のファイルを削除したり名前を変える 3.2.8 リポジトリのコピーを作る 3.3 設定ファイル 3.3.1 エイリアスを設定する 3.4 疑問点 4章 基本的なGitの概念 4.1 基本概念 4.1.1 リポジトリ 4.1.2 Gitのオブジェクトの種類 4.1.3 インデックス 4.1.4 内容参照可能な名前 4.1.5 Gitは内容を追跡する 4.1.6 ファイルのパスと内容 4.2 オブジェクト格納領域の図示 4.3 Gitの動作概念 4.3.1 .gitディレクトリの内部 4.3.2 オブジェクト、ハッシュ値、ブロブ 4.3.3 ファイルとツリー 4.3.4 GitにおけるSHA1の使用について 4.3.5 ツリーの階層 4.3.6 コミット 4.3.7 タグ 5章 ファイル管理とインデックス 5.1 最も重要なものはインデックスである 5.2 Gitでのファイルの分類 5.3 git addの使用 5.4 git commitを使う上での注意 5.4.1 git commit --allの使用 5.4.2 コミットログメッセージを書く 5.5 git rmの使用 5.6 git mvの使用 5.7 名前変更の追跡に関する議論 5.8 .gitignoreファイル 5.9 Gitのオブジェクトモデルとファイルの詳細 6章 コミット 6.1 アトミックなチェンジセット 6.2 コミットの識別 6.2.1 コミットの絶対名 6.2.2 参照とシンボリック参照 6.2.3 相対的なコミット名 6.3 コミット履歴 6.3.1 古いコミットの表示 6.3.2 コミットグラフ 6.3.3 コミット範囲 6.4 コミットを見つける 6.4.1 git bisectを使う 6.4.2 git blameを使う 6.4.3 つるはしを使う 7章 ブランチ 7.1 ブランチを使う理由 7.2 ブランチ名 7.2.1 ブランチ名のべし、べからず集 7.3 ブランチの利用 7.4 ブランチの作成 7.5 ブランチ名の一覧 7.6 ブランチの表示 7.7 ブランチのチェックアウト 7.7.1 ブランチをチェックアウトする基本的な例 7.7.2 コミット前の変更がある場合のチェックアウト 7.7.3 変更を異なるブランチにマージする 7.7.4 新しいブランチの作成とチェックアウト 7.7.5 切り離されたHEADのブランチ 7.8 ブランチの削除 8章 差分 8.1 git diffコマンドの形式 8.2 git diffの簡単な例 8.3 git diffとコミット範囲 8.4 パス制限を用いたgit diff 8.5 SubversionとGitのdiffの導出方法を比較する 9章 マージ 9.1 マージの例 9.1.1 マージの準備 9.1.2 2つのブランチのマージ 9.1.3 競合を伴うマージ 9.2 マージ競合への対処 9.2.1 競合ファイルを見つける 9.2.2 競合の調査 9.2.3 Gitの競合追跡方法 9.2.4 競合解決を完了する 9.2.5 マージの中断と再開 9.3 マージ戦略 9.3.1 縮退マージ 9.3.2 通常マージ 9.3.3 特殊なマージ 9.3.4 マージ戦略の適用 9.3.5 マージドライバ 9.4 Gitはマージをどうみなすのか 9.4.1 マージとGitオブジェクトモデル 9.4.2 スカッシュマージ 9.4.3 なぜ個々の変更を1つずつマージしないのか 10章 コミットの変更 10.1 履歴変更に関する注意 10.2 git reset の利用 10.3 git cherry-pickの利用 10.4 git revertの利用 10.5 reset、revert、checkoutコマンドの違い 10.6 先頭コミットの変更 10.7 コミットのリベース 10.7.1 git rebase -iを使う 10.7.2 リベース対マージ 11章 リモートリポジトリ 11.1 リポジトリの概念 11.1.1 ベアリポジトリと開発リポジトリ 11.1.2 リポジトリのクローン 11.1.3 リモート 11.1.4 追跡ブランチ 11.2 他のリポジトリを参照する 11.2.1 リモートリポジトリを参照する 11.2.2 refspec 11.3 リモートリポジトリの使用例 11.3.1 権威あるリポジトリの作成 11.3.2 自分用のoriginリモートの作成 11.3.3 リポジトリでの開発 11.3.4 変更のプッシュ 11.3.5 新しい開発者の追加 11.3.6 リポジトリの更新内容の取得 11.4 リモートリポジトリ操作の図解 11.4.1 リポジトリのクローン作成 11.4.2 代替履歴 11.4.3 fast-forwardではないプッシュ 11.4.4 代替履歴のフェッチ 11.4.5 履歴のマージ 11.4.6 マージ競合 11.4.7 マージされた履歴のプッシュ 11.5 リモートブランチの追加と削除 11.6 リモートの設定 11.6.1 git remote 11.6.2 git config 11.6.3 手作業での編集 11.7 ベアリポジトリとgit push 11.8 リポジトリの公開 11.8.1 アクセス制御付きのリポジトリ 11.8.2 匿名読み取りアクセス付きのリポジトリ 11.8.3 匿名書き込みアクセス付きのリポジトリ 12章 リポジトリの管理 12.1 リポジトリの構造 12.1.1 共有リポジトリの構造 12.1.2 分散リポジトリの構造 12.1.3 リポジトリ構造の例 12.2 分散開発との付き合い方 12.2.1 公開履歴の変更 12.2.2 コミットと公開の分離 12.2.3 本物の履歴は1つではない 12.3 自分の位置を知る 12.3.1 上流と下流の流れ 12.3.2 メンテナーと開発者の役割 12.3.3 メンテナーと開発者のやり取り 12.3.4 役割の二重性 12.4 複数のリポジトリでの作業 12.4.1 自分自身の作業空間 12.4.2 どこからリポジトリを開始するか 12.4.3 異なる上流リポジトリへの変換 12.4.4 複数の上流リポジトリの使用 12.4.5 プロジェクトのフォーク 13章 パッチ 13.1 なぜパッチを使用するのか 13.2 パッチの生成 13.2.1 パッチとトポロジカルソート 13.3 パッチのメール送信 13.4 パッチの適用 13.5 悪いパッチ 13.6 パッチ対マージ 14章 フック 14.1 フックのインストール 14.1.1 フックの用例 14.1.2 初めてのフックの作成 14.2 利用可能なフック 14.2.1 コミットに関連したフック 14.2.2 パッチに関連したフック 14.2.3 プッシュに関連したフック 14.2.4 その他のローカルリポジトリのフック 15章 プロジェクトの結合 15.1 古い解決策: 部分チェックアウト 15.2 明白な解決策: コードのプロジェクトへのインポート 15.2.1 コピーを使ってサブプロジェクトをインポートする 15.2.2 git pull -s subtreeでサブプロジェクトをインポートする 15.2.3 変更を上流に提出する 15.3 自動化された解決策: カスタムスクリプトを使ったサブプロジェクトの チェックアウト 15.4 Git本来の解決策: gitlinkとgit submodule 15.4.1 gitlink 15.4.2 git submoduleコマンド 16章 GitとSubversionリポジトリの併用 16.1 例: 単一のブランチの浅いクローン 16.1.1 Gitにおける変更 16.1.2 コミット前のフェッチ 16.1.3 git svn rebaseによるコミット 16.2 git svnによるプッシュ、プル、ブランチ、マージ 16.2.1 コミットIDをまっすぐに保つ 16.2.2 すべてのブランチのクローン 16.2.3 リポジトリの共有 16.2.4 Subversionへのマージの書き戻し 16.3 Subversionと一緒に作業する場合のその他の留意点 16.3.1 svn:ignore対.gitignore 16.3.2 git-svnキャッシュの再構築 付録A Gitにおける日本語の利用 A.1 ファイルの内容 A.2 ファイル名 A.3 コミットメッセージ 付録B GitHub入門 B.1 はじめに B.1.1 GitHubとは B.1.2 オープンソースソフトウェア開発への影響 B.2 GitHubの始め方 B.2.1 アカウントの作成 B.2.2 プロジェクトの登録 B.3 GitHubの各種機能 B.3.1 Gitリポジトリ B.3.2 SNS B.3.3 Wiki B.3.4 Issueトラッキング B.3.5 グラフ機能 B.4 GitHub以外の選択肢 B.5 まとめ B.6 参考文献 索引