Git
目次 ▾ 第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 addを実行したファイルのステージングを解除するために使用する、git resetの最も簡単な使用方法を最初に効果的に説明します。

次に、このコマンドの説明に完全に特化したReset Demystified(リセット詳解)で、かなり詳細に説明します。

マージの中断では、マージを中止するために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