-
1. 使い始める
- 1.1 バージョン管理に関して
- 1.2 Git略史
- 1.3 Gitの基本
- 1.4 コマンドライン
- 1.5 Gitのインストール
- 1.6 最初のGitの構成
- 1.7 ヘルプを見る
- 1.8 まとめ
-
2. Git の基本
- 2.1 Git リポジトリの取得
- 2.2 変更内容のリポジトリへの記録
- 2.3 コミット履歴の閲覧
- 2.4 作業のやり直し
- 2.5 リモートでの作業
- 2.6 タグ
- 2.7 Git エイリアス
- 2.8 まとめ
-
3. Git のブランチ機能
- 3.1 ブランチとは
- 3.2 ブランチとマージの基本
- 3.3 ブランチの管理
- 3.4 ブランチでの作業の流れ
- 3.5 リモートブランチ
- 3.6 リベース
- 3.7 まとめ
-
4. Gitサーバー
- 4.1 プロトコル
- 4.2 サーバー用の Git の取得
- 4.3 SSH 公開鍵の作成
- 4.4 サーバーのセットアップ
- 4.5 Git デーモン
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 サードパーティによる Git ホスティング
- 4.10 まとめ
-
5. Git での分散作業
- 5.1 分散作業の流れ
- 5.2 プロジェクトへの貢献
- 5.3 プロジェクトの運営
- 5.4 まとめ
-
6. GitHub
- 6.1 アカウントの準備と設定
- 6.2 プロジェクトへの貢献
- 6.3 プロジェクトのメンテナンス
- 6.4 組織の管理
- 6.5 スクリプトによる GitHub の操作
- 6.6 まとめ
-
7. Git のさまざまなツール
- 7.1 リビジョンの選択
- 7.2 対話的なステージング
- 7.3 作業の隠しかたと消しかた
- 7.4 作業内容への署名
- 7.5 検索
- 7.6 歴史の書き換え
- 7.7 リセットコマンド詳説
- 7.8 高度なマージ手法
- 7.9 Rerere
- 7.10 Git によるデバッグ
- 7.11 サブモジュール
- 7.12 バンドルファイルの作成
- 7.13 Git オブジェクトの置き換え
- 7.14 認証情報の保存
- 7.15 まとめ
-
8. Git のカスタマイズ
- 8.1 Git の設定
- 8.2 Git の属性
- 8.3 Git フック
- 8.4 Git ポリシーの実施例
- 8.5 まとめ
-
9. Gitとその他のシステムの連携
- 9.1 Git をクライアントとして使用する
- 9.2 Git へ移行する
- 9.3 まとめ
-
10. Gitの内側
- 10.1 配管(Plumbing)と磁器(Porcelain)
- 10.2 Gitオブジェクト
- 10.3 Gitの参照
- 10.4 Packfile
- 10.5 Refspec
- 10.6 転送プロトコル
- 10.7 メンテナンスとデータリカバリ
- 10.8 環境変数
- 10.9 まとめ
-
A1. 付録 A: その他の環境でのGit
- A1.1 グラフィカルインタフェース
- A1.2 Visual StudioでGitを使う
- A1.3 EclipseでGitを使う
- A1.4 BashでGitを使う
- A1.5 ZshでGitを使う
- A1.6 PowershellでGitを使う
- A1.7 まとめ
-
A2. 付録 B: Gitをあなたのアプリケーションに組み込む
- A2.1 Gitのコマンドラインツールを使う方法
- A2.2 Libgit2を使う方法
- A2.3 JGit
-
A3. 付録 C: Gitのコマンド
- A3.1 セットアップと設定
- A3.2 プロジェクトの取得と作成
- A3.3 基本的なスナップショット
- A3.4 ブランチとマージ
- A3.5 プロジェクトの共有とアップデート
- A3.6 検査と比較
- A3.7 デバッグ
- A3.8 パッチの適用
- A3.9 メール
- A3.10 外部システム
- A3.11 システム管理
- A3.12 配管コマンド
A3.4 付録 C: Gitのコマンド - ブランチとマージ
ブランチとマージ
Gitのブランチとマージの機能は、その大半がほんの一握りのコマンドで実装されています。
git branch
git branch
コマンドは、実際にはブランチ管理ツールのようなものです。あなたの持っているブランチを一覧表示したり、新しいブランチを作成したり、ブランチを削除したり、ブランチの名前を変更したりできます。
[ch03-git-branching] のほとんどは branch
コマンドに費やされており、この章の全体に渡って`branch` コマンドが使用されています。最初にこのコマンドを紹介したのは 新しいブランチの作成 で、そこで扱った以外の機能(一覧表示と削除)のほとんどは ブランチの管理 で見てきました。
追跡ブランチ では、 git branch -u
を使用して追跡ブランチを設定しました。
最後に、Gitの参照 では、このコマンドがバックグラウンドで行っていることについて見てきました。
git checkout
git checkout
コマンドは、ブランチを切り替える際と、コンテンツを作業ディレクトリへチェックアウトするのに使用されます。
このコマンドは、 ブランチの切り替え で、 git branch
コマンドとともに初めて登場しました。
追跡ブランチ では、--track
フラグを使用して、ブランチの追跡を開始する方法を見てきました。
コンフリクトのチェックアウト では、 --conflict=diff3
を使用して、ファイルの衝突部分を再表示しました。
リセットコマンド詳説 では、git checkout
と git reset
の関係の詳細を見てきました。
最後に、HEAD では、実装の詳細の一部を見てきました。
git merge
git merge
は、チェックアウト中のブランチに、1つまたは複数のブランチをマージする際に使用されるツールです。 このコマンドは、現在のブランチをマージの結果まで進めます。
git merge
コマンドを最初に紹介したのは ブランチの基本 でした。このコマンドは本書の様々な場所で使用されていますが、 merge
コマンドにはごく少数のバリエーションしかありません — その多くは、単に git merge <branch>
でマージする単一のブランチの名前を指定しているだけです。
フォークされた公開プロジェクト の最後では、マージの際にコミットをひとつにまとめる(Gitがマージを行う際に、マージするブランチの歴史を記録せず、あたかも新しくコミットされたかのようにする)方法について取り上げました。
高度なマージ手法 では、マージのプロセスとコマンドについて多くを見てきました。これには、-Xignore-space-change` コマンドや、 --abort
フラグを使って問題のあるマージを中断する方法が含まれます。
コミットへの署名 では、あなたのプロジェクトでGPG署名を使っている場合に、マージする前に署名を確認する方法を学びました。
最後に、サブツリーマージ では、サブツリーマージについて学びました。
git mergetool
git mergetool
コマンドは、Gitのマージに問題があった場合に、単に外部のマージ補助ツールを起動するコマンドです。
マージ時のコンフリクト では、このコマンドについて簡単に言及しました。また、外部のマージツールおよび diff ツール では、独自の外部マージツールを実装する方法について詳細に見てきました。
git log
git log
コマンドは、プロジェクトに記録されている歴史を、最新のコミットのスナップショットから後ろ向きに走査して到達可能な歴史を表示するのに使用されます。デフォルトでは現在のブランチの歴史だけを表示しますが、別のブランチ、または複数のブランチのHEADを与えて走査させることもできます。また、コミットレベルで複数のブランチ間の差異を表示するために使用されることもあります。
このコマンドは、本書のほぼすべての章で、プロジェクトの歴史の実例を表示するのに使用されています。
コミット履歴の閲覧 では、このコマンドを紹介し、ある程度深く説明を行いました。ここでは、各コミットで何が取り込まれたかを -p
および --stat
オプションを使って知る方法、 --pretty
および --oneline
オプションで歴史をより簡潔な形で見る方法、および日付や作者で簡単なフィルタリングを行うオプションを見てきました。
新しいブランチの作成 では、 --decorate
オプションを使用して、ブランチポインタがどこを指しているかを簡単に可視化しました。また、 --graph
オプションを使用して、分岐した歴史がどのようになっているかを見てきました。
非公開な小規模のチーム および コミットの範囲指定 では、 git log
コマンドで branchA..branchB
形式の構文を使用して、 他のブランチと比較して、あるブランチに固有のコミットはどれかを見る方法を取り上げました。コミットの範囲指定 では、かなり広範囲に渡ってこのコマンドを見てきました。
マージの履歴 および トリプルドット では、どちらか一方のブランチにだけ入っているものは何かを見るための branchA...branchB
形式および --left-right
構文の使い方を扱いました。マージの履歴 では、マージ衝突のデバッグを支援するための --merge
オプションの使い方と、歴史の中のマージコミットの衝突を見るための --cc
オプションの使い方を見てきました。
参照ログの短縮形 では、ブランチを走査する代わりにこのツールを使用してGit reflogを見るために -g
オプションを使いました。
検索 では、ある機能の歴史など、コードの歴史上で起こった出来事を検索するために、 -S
および -L
オプションを使用して非常に洗練された検索を行う方法を見てきました。
コミットへの署名 では、 --show-signature
を使って、各コミットが正当に署名されているかどうかに基づいて、 git log
の出力に対してバリデーション文字列を付け加える方法を見てきました。
git stash
git stash
コマンドは、未コミットの作業を一時的に保存する際に使用されます。これは、ワーキングディレクトリをきれいにしたいが、作業中の内容をブランチにコミットしたくないという場合に使用されます。
このコマンドの機能は基本的にすべて 作業の隠しかたと消しかた で取り上げました。
git tag
`git tag`コマンドは、コードの歴史の中で、特定のポイントに永続的なブックマークを付与するのに使用されます。一般的には、このコマンドはリリース作業などで使用されます。
タグ では、このコマンドの紹介と詳細な説明を行いました。また、リリース用のタグ付け では、実際にこのコマンドを使用しました。
作業内容への署名 では、 -s
フラグを使ってGPGで署名されたタグを作成する方法、および -v
フラグを使ってタグの署名を検証する方法を取り上げました。