shuhelohelo’s blog

Xamarin.Forms多めです.

.gitignoreを編集,もしくは途中で追加してそれを反映させる

メモ

忘れてしまうのでメモ.

以下の記事を参考にしました.ありがとうございます.

qiita.com

devconnected.com

.gitignoreファイルに除外対象を追加,または.gitignoreファイルをすでにgit管理されているプロジェクトに追加したときに,.gitignoreの設定内容を適用する手順は以下のとおり.

キャッシュ(Git管理対象ファイルのリスト)を削除

Gitは管理対象のファイルの情報,つまりどのファイルをGit管理するかという情報を保持しています.

このGit管理対象ファイルの情報に従って変更を追跡しています.

これがGitにおけるキャッシュ(cache)と呼ばれるもののようです.

さて,.gitignoreを編集,追加しただけではこのcacheの情報は変わらないので,.gitignoreに記述されているファイルはgitの追跡対象のままです.

例えばある.NETのプロジェクトがあったとして,これをビルドしたあとに.gitignoreファイルがない状態でgit add *をすると以下のように大量のファイルがGit管理対象ファイルとして追加されます.

f:id:shuhelohelo:20200211102941p:plain

198個のファイルが管理対象に追加されました.この中にはビルドの結果生成された多数のファイルが含まれ,これらはソースコードではなくGitで管理する必要はないので,管理対象外にしたいところです.

さて,ここで.gitignoreファイルを作成して除外対象を記述したとしても,当然ながら管理対象ファイルの数は変わりません.

これらのファイルはすでに管理対象としてcacheに登録されているので仕方ありません.

f:id:shuhelohelo:20200211103441p:plain

ですので,ここで管理対象ファイルの情報(cache)を一度クリアしてあげます.

cacheをクリアするコマンドは以下のとおりです.

> git rm -r --cached *

これですべてのファイルがGit管理対象外になりました.

f:id:shuhelohelo:20200211103645p:plain

改めてファイルをGit管理対象として登録する

おなじみのgit add *コマンドでファイルをGit管理対象として追加します.

git add *

f:id:shuhelohelo:20200211103911p:plain

先ほどと異なり,Git管理対象のファイル数が60まで減っています.

.gitignoreファイルの記述内容が反映されました.

後はcommitしてプッシュなりすればOKです.