-
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 スマートHTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 サードパーティのホスティングオプション
- 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ツール
-
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の内側
-
A1. 付録A: 他の環境でのGit
- A1.1 グラフィカルインターフェース
- A1.2 Visual StudioでのGit
- A1.3 Visual Studio CodeでのGit
- A1.4 IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMineでのGit
- A1.5 Sublime TextでのGit
- A1.6 BashでのGit
- A1.7 ZshでのGit
- A1.8 PowerShellでのGit
- A1.9 まとめ
-
A2. 付録B: アプリケーションへのGitの組み込み
- A2.1 コマンドラインGit
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
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 プラミングコマンド
3.4 Gitブランチ - ブランチのワークフロー
ブランチのワークフロー
ブランチとマージの基本を理解したところで、それらをどのように使うべきでしょうか? このセクションでは、軽量なブランチが可能にするいくつかの一般的なワークフローについて説明します。これにより、自分の開発サイクルにそれらを組み込むかどうかを判断できます。
長期間稼働するブランチ
Gitはシンプルな3ウェイマージを使用するため、あるブランチから別のブランチへ長期間にわたって複数回マージするのは一般的に簡単です。これは、開発サイクルの異なる段階で使用するために、常に開いている複数のブランチを持つことができることを意味します。それらのいくつかを定期的に他のブランチにマージできます。
多くのGit開発者は、このアプローチを採用したワークフローを持っています。例えば、完全に安定したコードのみをmaster
ブランチに保持し、場合によってはリリースされた、またはリリースされる予定のコードのみを保持します。彼らは、作業用または安定性テスト用にdevelop
またはnext
という別の並行ブランチを持っています。これは必ずしも常に安定しているわけではありませんが、安定した状態になるといつでもmaster
にマージできます。これは、トピックブランチ(以前のiss53
ブランチのような短命なブランチ)が準備できたときに取り込み、すべてのテストに合格し、バグを導入しないことを確認するために使用されます。
実際には、作成しているコミットのラインをポインタが上に移動していくことについて話しています。安定したブランチはコミット履歴の下の方にあり、最先端のブランチは履歴の上の方にあります。

これらを、コミットのセットが完全にテストされたときに、より安定したサイロに移行する作業サイロとして考える方が一般的に簡単です。

この作業を複数の安定性レベルで続けることができます。一部のより大規模なプロジェクトでは、next
またはmaster
ブランチに組み込む準備ができていない統合されたブランチを持つproposed
またはpu
(提案された更新)ブランチもあります。アイデアとしては、ブランチがさまざまな安定性レベルにあり、より安定したレベルに達したときに、その上位のブランチにマージされるというものです。繰り返しになりますが、複数の長期間稼働するブランチを持つことは必須ではありませんが、特に非常に大規模または複雑なプロジェクトを扱っている場合には、しばしば役立ちます。
トピックブランチ
しかし、トピックブランチはどんな規模のプロジェクトでも役立ちます。トピックブランチとは、単一の特定の機能や関連する作業のために作成して使用する、短命のブランチです。これは、ブランチの作成とマージが一般的に非常にコストがかかるため、これまでVCSで経験したことがないかもしれません。しかしGitでは、1日に数回ブランチを作成、作業、マージ、削除するのが一般的です。
このことは、前回のセクションで作成したiss53
ブランチとhotfix
ブランチで確認しました。それらに数回のコミットを行い、メインブランチにマージした直後にそれらを削除しました。この手法により、迅速かつ完全にコンテキストを切り替えることができます。作業がそのトピックに関連するすべての変更が分離されたサイロに分割されているため、コードレビューなどで何が起こったかを把握しやすくなります。変更を数分、数日、数か月間そこに保持し、作成または作業された順序に関係なく、準備ができたときにマージすることができます。
master
で作業を行い、ある問題(iss91
)のためにブランチを切り、しばらく作業し、同じことに対処する別の方法を試すために2番目のブランチ(iss91v2
)を切り、master
ブランチに戻ってしばらく作業し、その後、良いアイデアかどうかわからない作業(dumbidea
ブランチ)を行うためにブランチを切る例を考えてみましょう。コミット履歴は次のようになります。

さて、あなたの問題に対する2番目の解決策(iss91v2
)が最も気に入ったとしましょう。そして、dumbidea
ブランチを同僚に見せたところ、それが素晴らしいアイデアだと判明しました。元のiss91
ブランチを破棄し(コミットC5
とC6
を失います)、他の2つをマージすることができます。すると、履歴は次のようになります。

dumbidea
とiss91v2
をマージした後の履歴分散Gitでは、Gitプロジェクトで可能なさまざまなワークフローについてさらに詳しく説明しますので、次のプロジェクトでどのブランチスキームを使用するかを決定する前に、必ずその章を読んでください。
これらすべてを行う際に覚えておくべき重要なことは、これらのブランチが完全にローカルであるということです。ブランチとマージを行う場合、すべてはあなたのGitリポジトリ内でのみ行われ、サーバーとの通信はありません。