チャプター ▾ 第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 を実行したファイルをアンステージするために使用しています。

次に、このコマンドの説明に完全に捧げられているリセットの解明でかなり詳しく説明しています。

マージの中止で、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 コマンドは、ワーキングディレクトリから不要なファイルを削除するために使用されます。これには、一時的なビルドアーティファクトやマージの競合ファイルを削除することが含まれます。

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

scroll-to-top