はじめに
この実験では、Git リポジトリ内の追跡されていないファイルを特定する方法を学びます。追跡されていないファイルを理解することは、プロジェクトの状態を管理し、バージョン管理に関連するファイルのみを含めるために重要です。
まず、基本的な git status コマンドを使用して、追跡されていないファイルをリストアップし、その出力を理解します。その後、追跡されていないファイルをより直接的にリストアップする git ls-files --others コマンドを探索します。最後に、このプロセスで無視されるファイルをどのように考慮するかについて簡単に触れます。
git status を実行して追跡されていないファイルをリストする
このステップでは、git status コマンドを使用して、プロジェクトディレクトリ内のどのファイルが Git によって追跡されていないかを確認する方法を学びます。これは、リポジトリの状態を理解するための基本的なコマンドです。
まず、プロジェクトディレクトリにいることを確認してください。前の実験に従った場合、~/project/my-time-machine ディレクトリにいるはずです。pwd コマンドを使用して現在のディレクトリを確認できます。
pwd
出力は以下のようになるはずです。
/home/labex/project/my-time-machine
では、このディレクトリに新しいファイルを作成しましょう。notes.txt という名前にします。
echo "Some random notes" > notes.txt
このコマンドは、notes.txt という名前のファイルを作成し、「Some random notes」というテキストを書き込みます。
では、git status を実行して、Git がこの新しいファイルをどのように認識しているかを確認しましょう。
git status
以下のような出力が表示されるはずです。
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: message.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
notes.txt
no changes added to commit (use "git add" and/or "git commit -a")
「Untracked files:」のセクションに注目してください。Git は、notes.txt が追跡されていないファイルであることを教えてくれます。これは、Git がファイルを認識しているが、現在そのバージョンを管理していないことを意味します。明示的に指示しない限り、Git はこのファイルをコミットに含めません。
追跡されていないファイルを理解することは、リポジトリをきれいに保ち、プロジェクトの一部であるファイルのみを追跡するのに役立つため重要です。一時ファイル、ビルドアーティファクト、または個人用のメモは、多くの場合追跡されません。
git ls-files --others を使用して確認する
前のステップでは、git status を使用して追跡されていないファイルを確認しました。git status はリポジトリの状態をよく把握することができますが、時には追跡されていないファイルのみのシンプルなリストが欲しい場合もあります。このようなときに git ls-files --others が便利です。
まだ ~/project/my-time-machine ディレクトリにいることを確認してください。
では、以下のコマンドを実行しましょう。
git ls-files --others
以下のような出力が表示されるはずです。
notes.txt
このコマンドは、作業ディレクトリ内の Git によって追跡されていないすべてのファイルをリストアップします。git status の詳細な出力と比較して、追跡されていないファイルのみを見るためのより直接的な方法です。
--others オプションは、git ls-files に Git インデックスの一部ではない(つまり、追跡されていない)ファイルのみをリストアップするよう指示します。これは、スクリプト作成や、プロジェクト内の新しい追跡されていないファイルのクイックリストが必要な場合に便利です。
なぜ git status の代わりに git ls-files --others を使用するのか疑問に思うかもしれません。git status は変更されたファイルやステージングされたファイルを含む包括的なビューを提供しますが、git ls-files --others は追跡されていないファイルのみをリストアップするように特別に設計されています。これは、たとえば一時ファイルをクリーンアップするスクリプトのように、追跡されていないファイルをプログラムで処理または管理したい場合に非常に便利です。
無視されるファイルの確認と組み合わせる
前のステップでは、git status と git ls-files --others を使用して追跡されていないファイルを特定する方法を学びました。しかし、一時ファイル、ビルド出力、または機密情報を含む設定ファイルのように、意図的に Git が追跡しないようにしたいファイルがある場合があります。Git では、これらのファイルを .gitignore ファイルで指定することができます。
このステップでは、.gitignore ファイルを作成し、それが git status と git ls-files --others の出力にどのように影響するかを確認します。
まず、~/project/my-time-machine ディレクトリにいることを確認してください。
では、無視したいファイルを作成しましょう。temp.log という名前にします。
echo "This is a temporary log file" > temp.log
再度 git status を実行します。
git status
notes.txt と temp.log の両方が追跡されていないファイルとしてリストされているはずです。
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: message.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
notes.txt
temp.log
no changes added to commit (use "git add" and/or "git commit -a")
では、.gitignore ファイルを作成し、temp.log を追加しましょう。nano エディタを使用してファイルを作成および編集します。
nano .gitignore
nano エディタ内で、以下の行を入力します。
temp.log
Ctrl + X を押し、次に Y を押して保存し、Enter を押してファイル名を確認します。
では、もう一度 git status を実行します。
git status
今度は、temp.log は「Untracked files:」のリストに表示されなくなるはずです。
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: message.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
notes.txt
no changes added to commit (use "git add" and/or "git commit -a")
Git はこれで temp.log を無視するようになりました。git ls-files --others がどのように影響を受けるかも確認してみましょう。
git ls-files --others
出力は現在 notes.txt のみを表示するはずです。
notes.txt
デフォルトでは、git ls-files --others は無視されるファイルをリストしません。通常、明示的に Git に無視するように指示したファイルを表示したくないため、これは望ましい動作です。
もし無視されるファイルを他の追跡されていないファイルと一緒に表示したい場合は、git ls-files --others に --ignored オプションを使用することができます。
git ls-files --others --ignored
出力には、追跡されていないファイルと無視されるファイルの両方が含まれるようになります。
.gitignore
notes.txt
temp.log
なお、.gitignore 自体は、追加してコミットするまでは追跡されていないファイルです。
.gitignore の使い方を理解することは、リポジトリをきれいに保ち、実際のプロジェクトファイルに焦点を当てるために重要です。バージョン管理に含めるべきでないファイルが誤ってコミットされるのを防ぎます。
まとめ
この実験では、Git リポジトリ内の追跡されていないファイルを特定する方法を学びました。まず、リポジトリの状態を包括的に概観できる基本的な git status コマンドを使用しました。このコマンドには追跡されていないファイルの専用セクションがあり、Git が現在管理していないファイルを把握するのに不可欠です。
次に、追跡されていないファイルをリストする別の方法として git ls-files --others コマンドを調べました。このコマンドは、追跡されていないファイルのみをリストするシンプルな出力を提供します。3 番目のステップの詳細内容は提供されていませんが、タイトルから、このチェックを .gitignore ファイルを介して Git の追跡から意図的に除外される無視ファイルの考慮と組み合わせることになると思われます。



