章 ▾ 第2版

A3.3 付録C: Gitコマンド - 基本的なスナップショット

基本的なスナップショット

コンテンツをステージングし、履歴にコミットするという基本的なワークフローには、いくつかの基本的なコマンドしかありません。

git add

git addコマンドは、ワーキングディレクトリからステージングエリア(または「インデックス」)にコンテンツを追加し、次のコミットの準備をします。git commitコマンドが実行されると、デフォルトではこのステージングエリアのみを参照するため、git addは次のコミットスナップショットを正確にどのようなものにしたいかを組み立てるために使用されます。

このコマンドはGitにおいて非常に重要なコマンドであり、本書では数十回にわたって言及または使用されています。ここでは、見られるいくつかのユニークな使用法を簡単に説明します。

最初に、新しいファイルの追跡git addを詳しく紹介し、説明しています。

基本的なマージ競合では、マージ競合を解決するためにこれを使用する方法を述べています。

対話的なステージングでは、変更されたファイルの特定の部分のみを対話的にステージングするためにこれを使用する方法を説明しています。

最後に、ツリーオブジェクトで低レベルでエミュレートすることで、その裏側で何が行われているかを知ることができます。

git status

git statusコマンドは、ワーキングディレクトリとステージングエリアにあるファイルの様々な状態を表示します。どのファイルが変更されて未ステージングであるか、どのファイルがステージングされているがまだコミットされていないかを示します。通常の形式では、これらのステージ間でファイルを移動する方法に関する基本的なヒントも表示されます。

最初に、ファイルのステータスを確認するで、statusの基本形と簡略形の両方を説明しています。本書全体でこれを使用していますが、git statusコマンドでできることのほとんどはそこでカバーされています。

git diff

git diffコマンドは、任意の2つのツリー間の差分を見たいときに使用します。これは、ワーキング環境とステージングエリア間の差分(単独のgit diff)、ステージングエリアと最後のコミット間の差分(git diff --staged)、または2つのコミット間の差分(git diff master branchB)である可能性があります。

最初に、ステージングされた変更と未ステージングの変更を表示するgit diffの基本的な使い方を見ています。そこでは、どの変更がステージングされており、どの変更がまだステージングされていないかを確認する方法を示しています。

コミットガイドラインでは、コミットする前に--checkオプションを使用して、可能性のある空白の問題を探すために使用します。

何が導入されたかを判断するでは、git diff A…​B構文を使用してブランチ間の差分をより効果的に確認する方法を見ています。

高度なマージでは、-bで空白の差分を除外する方法と、競合したファイルの異なるステージを--theirs--ours--baseで比較する方法を使用します。

最後に、サブモジュールを始めるでは、--submoduleを使用してサブモジュールの変更を効果的に比較するために使用します。

git difftool

git difftoolコマンドは、組み込みのgit diffコマンド以外のツールを使用したい場合に、2つのツリー間の差分を表示するために外部ツールを起動するだけです。

ステージングされた変更と未ステージングの変更を表示するでは、これについて簡単に言及するだけです。

git commit

git commitコマンドは、git addでステージングされたすべてのファイルコンテンツを受け取り、データベースに新しい永続的なスナップショットを記録し、現在のブランチのブランチポインタをそれに移動させます。

最初に、変更をコミットするでコミットの基本を説明しています。そこでは、日常のワークフローでgit addステップをスキップするために-aフラグを使用する方法や、エディタを起動する代わりにコマンドラインでコミットメッセージを渡すために-mフラグを使用する方法も示しています。

やり直しでは、最新のコミットをやり直すために--amendオプションを使用する方法を説明しています。

ブランチの概要では、git commitが何をするのか、そしてなぜそのようにするのかについて、さらに詳しく説明しています。

コミットの署名では、-Sフラグを使用してコミットを暗号学的に署名する方法を見ています。

最後に、コミットオブジェクトで、git commitコマンドがバックグラウンドで何をしているのか、そしてそれが実際にどのように実装されているのかを見ていきます。

git reset

git resetコマンドは、動詞から推測できるように、主に「やり直し」のために使用されます。これはHEADポインタを移動させ、オプションでindexまたはステージングエリアを変更し、さらに--hardを使用するとワーキングディレクトリも変更できます。この最後のオプションは、誤って使用すると作業を失う可能性があるため、使用する前に理解しておくことが重要です。

最初に、ステージングされたファイルのステージング解除git resetの最も簡単な使用法を効果的に説明しています。そこでは、git addを実行したファイルをステージング解除するためにこれを使用します。

次に、このコマンドの説明に完全に特化したResetの解明で、かなり詳細に説明しています。

マージを中止するでは、git reset --hardを使用してマージを中止する方法を説明しています。そこでは、git resetコマンドのラッパーのようなものであるgit merge --abortも使用します。

git rm

git rmコマンドは、Gitのステージングエリアおよびワーキングディレクトリからファイルを削除するために使用されます。これはgit addに似ており、次のコミットのためにファイルの削除をステージングします。

ファイルの削除では、git rmコマンドについて詳細に説明しています。これには、ファイルを再帰的に削除する方法や、ステージングエリアからのみファイルを削除し、ワーキングディレクトリに残す--cachedオプションの使用方法も含まれます。

本書におけるgit rmの唯一の異なる使用法は、オブジェクトの削除で、git filter-branchを実行する際に--ignore-unmatchを簡単に使用し、説明しています。これは、削除しようとしているファイルが存在しない場合でもエラーにならないようにするものです。これはスクリプト目的で役立ちます。

git mv

git mvコマンドは、ファイルを移動し、新しいファイルに対してgit addを、古いファイルに対してgit rmを実行するための薄いユーティリティコマンドです。

このコマンドについては、ファイルの移動で簡単に言及するだけです。

git clean

git cleanコマンドは、ワーキングディレクトリから不要なファイルを削除するために使用されます。これには、一時的なビルド成果物やマージ競合ファイルを削除することも含まれます。

ワーキングディレクトリのクリーンアップでは、cleanコマンドを使用する可能性のある多くのオプションとシナリオを説明しています。

scroll-to-top