【Git】untracked filesの解消方法

【Git】untracked filesの解消方法 Git

Gitで作業中にgit statusを実行すると、変更やコミットとは別に「Untracked files」と表示されることがあります。
これは、まだGitの管理下にないファイルやディレクトリが作業ディレクトリに存在している状態を意味します。
本記事では、この「untracked files」を解消する方法について、原因別に整理しながら解説します。

untracked filesとは何か

「untracked files」とは、Gitが追跡していない(=コミット履歴に含まれていない)ファイルのことです。
新しく作成したファイルや、.gitignoreで除外されていないファイルが該当します。
例えば以下のように表示されます。

$ git status
On branch main
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        debug.log
        tmp/

この状態を解消するには、ファイルをGit管理下に加えるか、無視設定するか、削除するかのいずれかを選びます。

方法1:Git管理下に追加して解消する

管理対象にしたい場合は、git addでステージングしてからコミットします。
これにより「untracked」から「tracked」へ状態が変わります。

# ファイルをステージしてコミット
git add debug.log tmp/
git commit -m "Add new files"

ファイル単位だけでなく、ディレクトリ全体を追加することも可能です。
ただし、不要なファイルまで含めないよう、事前に内容を確認しましょう。

方法2:.gitignoreで管理対象から除外する

ログファイルやキャッシュファイルなど、バージョン管理不要なものは.gitignoreに追記して無視します。

# .gitignore例
debug.log
tmp/

.gitignoreに追記後、git statusを再実行すれば「untracked files」から消えます。
ただし、一度Git管理下に追加されたファイルは.gitignoreに書いても無視されないため、追跡解除が必要です。

# 追跡解除(ローカルファイルは残す)
git rm --cached debug.log

方法3:ローカルから削除する

不要なファイルであれば、ローカルから削除することでuntracked状態を解消できます。
手動で削除する方法と、Gitコマンドで一括削除する方法があります。

# 手動削除
rm debug.log

# untrackedファイルを一括削除(確認付き)
git clean -i

# 確認なしで強制削除(注意)
git clean -fd

git cleanは強力なコマンドで、削除したファイルは復元できないため、必ず事前に確認することをおすすめします。

方法4:一時的に無視する(作業中だけ)

一時的にuntrackedファイルを無視したい場合は、git update-index --assume-unchanged--skip-worktreeで扱うことも可能ですが、
これは一時的・特殊な運用時のみ推奨されます。一般的な解消には.gitignoreや削除の方が安全です。

まとめ

untracked filesは、Gitがまだ管理していないファイルであることを意味します。
管理対象にするならgit add、管理外にするなら.gitignore、不要なら削除という3つの方法で解消できます。
状況に応じて適切な方法を選び、git statusをクリーンな状態に保つことで、作業の見通しが良くなり、誤コミットの防止にもつながります。