Git でファイルが未追跡かどうかを確認する方法

GitGitBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Git リポジトリ内の追跡されていないファイルを特定する方法を学びます。主に 2 つの方法を探ります。1 つは、追跡されていないファイルを含むリポジトリの全体的な状態を表示する git status コマンドを使用する方法で、もう 1 つは、追跡されていないファイルのみを対象とした詳細な一覧を表示する git ls-files --others コマンドを利用する方法です。この実験の終わりまでに、Git が追跡されているファイルと追跡されていないファイルをどのように区別するか、およびこれらのコマンドを使用してプロジェクトのファイルを効果的に管理する方法を理解するようになります。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") subgraph Lab Skills git/add -.-> lab-560033{{"Git でファイルが未追跡かどうかを確認する方法"}} git/status -.-> lab-560033{{"Git でファイルが未追跡かどうかを確認する方法"}} end

git status を実行して追跡されていないファイルを一覧表示する

このステップでは、git status コマンドを使用して、Git がファイルをどのように追跡し、まだ認識していないファイルをどのように特定するかを確認します。

まず、my-time-machine ディレクトリにいることを確認してください。いない場合は、cd コマンドを使用します。

cd ~/project/my-time-machine

では、このディレクトリに新しいファイルを作成しましょう。notes.txt という名前にします。

echo "Ideas for future projects" > notes.txt

このコマンドは、notes.txt という名前のファイルを作成し、その中に「Ideas for future projects」というテキストを入れます。

では、Git にリポジトリの状態を問い合わせましょう。

git status

次のような出力が表示されるはずです。

On branch master
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   message.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        notes.txt

「Untracked files:」のセクションに注目してください。Git は、新しいファイル notes.txt がディレクトリに存在することを認識していますが、まだリポジトリの履歴の一部ではありません。Git は、作成したすべてのファイルを自動的に追跡するわけではありません。これにより、バージョン管理に含めるファイルを自分でコントロールすることができます。

これが重要な理由は何でしょうか?プロジェクトディレクトリに一時ファイル、ビルド出力、または個人用のメモがあると想像してみてください。これらのファイルがプロジェクトの履歴を混乱させることは望ましくありません。Git の「untracked」状態により、これらのファイルをバージョン管理で積極的に管理しているファイルから分離することができます。

次のステップでは、これらの追跡されていないファイルを一覧表示する別の方法を探ります。

git ls-files --others を使用する

前のステップで、git status が追跡されていないファイルを表示することを確認しました。Git は、インデックスとワーキングツリー内のファイルを一覧表示するための、より直接的なコマンドも提供しています。git ls-files コマンドに --others オプションを付けることで、追跡されていないファイルのみを一覧表示できます。

まだ ~/project/my-time-machine ディレクトリにいることを確認してください。

cd ~/project/my-time-machine

では、次のコマンドを実行しましょう。

git ls-files --others

次のような出力が表示されるはずです。

notes.txt

このコマンドは、ワーキングディレクトリに存在するが、Git で追跡されていないファイルを具体的に一覧表示します。これは、Git が現在無視している、またはまだ認識していないファイルのみをきれいに一覧表示したい場合に便利なコマンドです。

git statusgit ls-files --others を比較すると:

  • git status は、変更がある追跡済みファイル、ステージングされた変更、および追跡されていないファイルを含む、リポジトリの状態の包括的な概要を提供します。
  • git ls-files --others は、より対象を絞っており、追跡されていないファイルのみを一覧表示します。

両方のコマンドは、異なる状況で役立ちます。git status は全体的な概要を把握するのに最適ですが、git ls-files --others は、追跡されていないファイルを特定して、リポジトリに追加するか無視するかを決めたい場合に便利です。

次のステップでは、別のファイルを追加し、Git がどのように反応するかを観察することで、追跡済みファイルと追跡されていないファイルの違いをさらに探ります。

追跡済みファイルと未追跡ファイルのテスト

このステップでは、notes.txt を Git の追跡対象に追加し、状態の変化を観察することで、追跡済みファイルと未追跡ファイルの違いについての理解を深めます。

まず、~/project/my-time-machine ディレクトリにいることを確認してください。

cd ~/project/my-time-machine

では、git add コマンドを使用して、notes.txt ファイルの追跡を開始するよう Git に指示しましょう。

git add notes.txt

このコマンドは、notes.txt をステージングエリアに追加し、次のコミットに含める準備をします。

では、再度リポジトリの状態を確認しましょう。

git status

次のような出力が表示されるはずです。

On branch master
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   message.txt
        new file:   notes.txt

notes.txt が「Untracked files:」の下にはもう表示されていないことに注意してください。代わりに、「Changes to be committed:」の下に「new file」として表示されています。これは、Git が現在 notes.txt を追跡しており、次の保存ポイント(コミット)に含める準備ができていることを意味します。

これは、重要な違いを示しています。

  • 未追跡ファイル(Untracked files): ワーキングディレクトリに存在するが、git add でステージングエリアに追加されていないファイル。Git はそれらが存在することを知っていますが、それらのバージョンを管理していません。
  • 追跡済みファイル(Tracked files): Git が積極的に管理しているファイル。ファイルが追加されてコミットされると、Git はその変更を経時的に追跡します。

git add を使用することで、バージョン管理されたプロジェクトに含めたいファイルを明示的に Git に指示することができます。このコントロールは、プロジェクトを効果的に管理し、履歴をきれいに保つために不可欠です。

次の実験(Lab)では、これらの基本概念をさらに発展させて、より多くのコミットを作成し、Git の履歴管理の威力を探ります。

まとめ

この実験(Lab)では、Git リポジトリ内の未追跡ファイルを特定する方法を学びました。まず、git status コマンドを使用しました。このコマンドは、リポジトリの状態の包括的な概要を提供し、未追跡ファイルに関する専用のセクションも含まれています。これにより、Git が積極的に追跡しているファイルと、まだ認識していない新しいファイルをどのように区別するかがわかりました。

次に、git ls-files --others コマンドを調べました。これは、ワーキングディレクトリ内の未追跡ファイルのみを一覧表示するために特別に設計された代替方法です。このコマンドは、現在 Git のバージョン管理下にないファイルをより的確に把握する方法を提供します。未追跡ファイルを特定する方法を理解することは、プロジェクトの履歴に含まれるファイルを管理し、リポジトリをきれいに保つために重要です。