途中でgit管理から除外する方法

Git

git管理をしている途中で、特定のディレクトリやファイルをgit管理から外したくなることがあります。

まあまあこうした機会に遭遇することがあるので覚書しときます。

うさぎ
うさぎ

いつもわからなくなるんだよね

git管理から除外する流れ

.gitignoreに追記

git管理から除外したいディレクトリ・ファイルを追記する

例)imgディレクトリ以下全て管理除外したい場合(.gitignoreファイルにて)

/img
ワーキングツリーとインデックスから除外

ディレクトリの場合

git rm --cached -r 削除したいディレクトリorファイル名

git rm –cached -r 削除したいディレクトリorファイル名

ファイルの場合

git rm --cached ファイル名
変更をコミット
$ git add .
$ git commit -m "(例)imgディレクトリを管理対象から除外"

.gitignoreに追記する

管理から外したいディレクトリ・ファイルを.gitignoreに追記します。

*除外したいのがimgディレクトリの場合

img/

<.gitignoreが見つからない!という方>
通常は隠しファイルになっています。macを使用している方はFinderで⌘ + SHIFT + .を押してみてください。gitを置いたディレクトリに.gitignoreが出現します。

ワーキングツリー・インデックスから除外

rmコマンドのフォーマット解説

rmコマンドを使用します。

ディレクトリの場合

git rm --cached -r 削除したいディレクトリorファイル名

ファイルの場合

git rm --cached ファイル名

コマンドrm

コマンドでディレクトリやファイルをワーキングツリーとインデックスから除外します。

オプション-rの解説

-r

Allow recursive removal when a leading directory name is given.

引用:Git – git-rm Documentation

ディレクトリが指定された場合は、ディレクトリ名を基準にして、そのディレクトリ内のファイルやサブディレクトリを含めてすべて削除できます。

オプション–cachedの解説

–cached

Use this option to unstage and remove paths only from the index. Working tree files, whether modified or not, will be left alone.

引用:Git – git-rm Documentation

--cached オプションを使用することで、ファイルを ステージングエリア(インデックス)から削除 するものの、実際の作業ディレクトリ(ワーキングツリー)内のファイル自体はそのまま残る、という意味です。例えば、ファイルを「git add」でステージングした後に git reset --cached <ファイル名> を実行すると、ステージングエリアからは外れますが、ファイルはディスク上にそのまま残り、内容も変更されません。

ワーキングツリー: 実際にローカルのプロジェクトで作業しているファイルやディレクトリの状態。ここでファイルを編集します。

ステージングエリア: git add コマンドで、コミットする前にファイルの変更内容を一時的に保存する場所。コミットしたい変更を準備するためのエリア。

(例)imgディレクトリを管理から消す

git rm --cached -r img/

ディレクトリごと管理から外したいので-rオプションが必要ですね。

コミットして完了

コミットしてgit管理から除外完了。

$ git add .
$ git commit -m "(例)imgディレクトリを管理対象から除外"

おしまーい。

うさぎ
うさぎ

おつかれえええええ!!!