Git
目次 ▾ 第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>を使用します。

フォークされた公開プロジェクトの最後に、圧縮マージ(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 ショートネームでは、ブランチのトラバーサルではなく、-gオプションを使用してこのツールでGit reflogを表示する方法を説明します。

検索では、関数の履歴など、コードの履歴で発生したものをかなり高度に検索するための-Sオプションと-Lオプションの使用方法を説明します。

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

git stash

git stashコマンドは、未完了の作業をコミットせずに作業ディレクトリをクリーンアップするために、コミットされていない作業を一時的に保存するために使用されます。

これは基本的にスタッシュとクリーンアップで完全に網羅されています。

git tag

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

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

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

scroll-to-top