チャプター ▾ 第2版

A3.4 付録 C: Git コマンド - ブランチとマージ

ブランチとマージ

Git のブランチとマージ機能のほとんどを実装しているコマンドはごくわずかです。

git branch

git branch コマンドは、実はブランチ管理ツールのようなものです。持っているブランチを一覧表示したり、新しいブランチを作成したり、ブランチを削除したり、ブランチの名前を変更したりできます。

Git のブランチ機能のほとんどは branch コマンドに割かれており、章全体で使われています。まず 新しいブランチの作成で紹介され、その後のほとんどの機能 (一覧表示と削除) は ブランチ管理で説明されています。

追跡ブランチでは、git branch -u オプションを使って追跡ブランチを設定します。

最後に、Git の参照でそのバックグラウンドでの動作について説明しています。

git checkout

git checkout コマンドは、ブランチを切り替えたり、コンテンツをワーキングディレクトリにチェックアウトしたりするために使われます。

このコマンドは、git branch コマンドとともに ブランチの切り替えで初めて登場します。

追跡ブランチでは、--track フラグを使って追跡ブランチの開始方法を説明しています。

競合のチェックアウトでは、--conflict=diff3 を使ってファイル競合を再導入する方法を説明しています。

Reset の解明では、git reset との関係について詳しく説明しています。

最後に、HEADで実装の詳細について説明しています。

git merge

git merge ツールは、チェックアウトしたブランチに1つまたは複数のブランチをマージするために使われます。その後、現在のブランチはマージの結果に移動します。

git merge コマンドは 基本的なブランチ機能で初めて紹介されました。書籍のさまざまな場所で使われていますが、merge コマンドにはほとんどバリエーションがありません。通常は、マージしたい単一のブランチ名を指定する git merge <branch> です。

公開プロジェクトのフォークの最後で、squashed merge の方法 (Git は作業をマージするが、マージするブランチの履歴を記録せずに新しいコミットであるかのように見せかける) を説明しました。

高度なマージでは、マージプロセスとコマンドについて多くのことを説明しました。これには -Xignore-space-change コマンドや、問題のあるマージを中止するための --abort フラグが含まれます。

プロジェクトが GPG 署名を使用している場合、コミットの署名でマージ前に署名を検証する方法を学びました。

最後に、サブツリーのマージでサブツリーのマージについて学びました。

git mergetool

git mergetool コマンドは、Git でマージに問題がある場合に、外部マージヘルパーを起動するだけです。

基本的なマージの競合で簡単に言及し、外部マージおよび差分ツールで独自の外部マージツールを実装する方法について詳しく説明しています。

git log

git log コマンドは、最新のコミットスナップショットから逆方向に、プロジェクトの到達可能な記録された履歴を表示するために使われます。デフォルトでは、現在いるブランチの履歴のみを表示しますが、異なるまたは複数のヘッドやブランチを指定してトラバースすることもできます。また、コミットレベルで2つ以上のブランチ間の違いを表示するためにもよく使われます。

このコマンドは、プロジェクトの履歴を説明するために、本書のほぼすべての章で使われています。

コミット履歴の表示で、このコマンドを紹介し、詳しく説明しています。そこでは、各コミットで何が導入されたかを把握するための -p および --stat オプションと、履歴をより簡潔に表示するための --pretty および --oneline オプション、さらに簡単な日付と作者のフィルタリングオプションについて説明しています。

新しいブランチの作成では、--decorate オプションを使ってブランチポインタの位置を簡単に視覚化し、--graph オプションを使って分岐した履歴がどのように見えるかを確認しています。

小規模プライベートチームコミット範囲では、branchA..branchB 構文を使って git log コマンドで他のブランチと比較してブランチに固有のコミットを確認する方法を説明しています。コミット範囲では、これについてかなり詳しく説明しています。

マージログトリプルドットでは、branchA…​branchB 形式と --left-right 構文を使って、両方ではなくどちらかのブランチに存在するものを確認する方法を説明しています。マージログでは、--merge オプションを使ってマージ競合のデバッグを助ける方法や、--cc オプションを使って履歴のマージコミット競合を確認する方法も説明しています。

RefLog のショートネームでは、ブランチトラバースを行う代わりに、このツールを通して Git のリフロッグを表示するために -g オプションを使っています。

検索では、-S および -L オプションを使って、コードで過去に発生したことを高度に検索する方法、例えば関数の履歴を確認する方法について説明しています。

コミットの署名では、--show-signature を使って、有効に署名されているかどうかに基づいて、git log 出力の各コミットに検証文字列を追加する方法を説明しています。

git stash

git stash コマンドは、未完了の作業をブランチにコミットすることなく、ワーキングディレクトリをきれいにするために、コミットされていない作業を一時的に保存するために使われます。

これは基本的にすべて スタッシュとクリーンアップで説明されています。

git tag

git tag コマンドは、コード履歴の特定のポイントに永続的なブックマークを付けるために使われます。一般的に、これはリリースなどのために使われます。

このコマンドは タグ付けで紹介され、詳しく説明されており、リリースにタグを付けるで実際に使われています。

作業に署名するでは、-s フラグを使って GPG 署名付きタグを作成し、-v フラグでそれを検証する方法も説明しています。

scroll-to-top