ナンノこっちゃよくわからないタイトルですが、たぶん分かる人にはわかってもらえると思います。

 

.gitignore が Git に無視 (ignore) されてしまう

Eclipse で Git を使う時、時々気を抜いていると起こるのですが、例えば target/ 以下にあるファイルを不意にコミットしてしまっていて、target/ のフォルダを [Team] → [ignore] して、フォルダごとステージングされないようにしているにも関わらず、何度もインデックスに上がってしまうあの現象のことです。

例えば、target/ フォルダを ignore したとします。

すると、.gitignore ファイルに次のようにフォルダが追加され、今後 Git がトラッキングしないようにできます。

# this is a comment
target/

ところが、このフォルダ以下のファイルを一度コミットしてしまったような場合、.gitignore でそのフォルダが指定されていたとしても、git add するたびに無視したはずのファイルが何度も亡霊のように出てきます。

キャッシュをクリアすることで解決

これは、一旦リポジトリにステージングさせたくないファイルを追加していると、.gitignore ファイルに記載されても、リポジトリにキャッシュが残っているために結果、トラッキングされてしまうようです。

こんな場合は、次のようにします。

# まず最初に現在のワーキングツリーの内容をインデックスに追加してコミットします。
# でないと、それ以降の作業で変更が失われます。
git add .
git commit -m "initial commit"
git rm -r --cached .
git add .
git commint -m "fixed untracked files"

これで終わりです。

今回のように、トラッキングを解除したいファイルが一つの場合は、

git rm -r --cached target/

または、

git rm --cached target/XXX.class

のようにしてもOK。


 
記事を共有する
カテゴリー: Linuxubuntuコマンド

zaturendo

中小企業社内SE。

0件のコメント

コメントを残す

メールアドレスが公開されることはありません。