【Sourcetree】 .gitignoreにもないファイルが追跡されなくなっていた時の対処法
移転しました。3秒後に移転先へ移動します。
Railsアプリ開発で、現在はSourcetreeでコミットやプッシュしているのですが、
ある日気づいたら
- 特定のファイルがGithubやSourcetreeで、変更などの反映がされなくなっていた(=追跡されてない。というか存在すらしていない状態)
- しかし.gitignore(=gitの追跡を無視する対象リスト)には件のファイルは記述されていない
という事態に陥っていましたw
1~2週間くらい悩まされていたのですが、調べなおしたら簡単に解決したw
ので忘れずにめもめも。
エラー内容(もとい症例):
ディレクトリごとグレー表示だが、無視されているのはそのうち特定のファイルだけ
しかも .gitignoreにもない
症状は次の図の通り。
ビューのusersディレクトリとpublicディレクトリが、いつの間にかグレーになっている。
.gitignoreファイルを見ても、どちらも書かれていないので無視対象でないはずなのに;
(tmpディレクトリは.gitignoreに記載されているからグレーで問題ないだろうけど。。)
上のテキストエディタではusersディレクトリまるごとグレー表示になってますが、問題はshow.html.erbファイルで、
コミットやプッシュしても(indexなど)users以下の他のファイルは変更反映されてるのにshow.html.erbだけがGithubやSourtreeに追跡されていないようで、
ブラウザ表示はできるのにプッシュしてもリモートに”ない”という状態。
git status --ignored コマンドを打ってみる
git status --ignored で追跡されてないものは検出される。
やっぱりusers以下のファイル全部グレーになってたけど、showファイルだけなんですよね。追跡されてないのは。
ちなみにメッセージの通り、addするときに-f オプションをつければリモートにあげることはできました。でもSourcetreeには出てきませんでした。
なぜshowファイルだけ ”ない” 状態なのか
この理由はおおかた予想がついています。
このshowファイルは、usersディレクトリがグレー表示になった状態で新規追加したファイルだったから。
ディレクトリ以下が追跡されない状態になり、そこに作ったファイルだったから最初から追跡対象になっていないためですね…(´ー` )
状況は把握できたので、あとは追跡されてないのをなんとかするだけだー(`・ω・´)ノ
対処:Sourcetree側の無視リストを再度確認
日を改めてググってみたらすぐに回答が見つかりましたw
Q.
SourceTreeでGitを管理しているのですが、無視したくないファイルが無視されてしまい、解除の方法がわかりません。
A.
以下のどちらかに該当の設定はありませんか?
グローバル
オプション
>Git
>グローバル無視リスト
リポジトリ
設定
>詳細
>リポジトリ固有の無視リスト
引用元:
Git - SourceTreeで無視リストの設定方法について(29437)|teratail
グローバル無視リスト…だと…?!
お?!!!
あ っ た (´_ゝ`)
しかもちゃんとusersディレクトリ以下が対象になってるヨ。
gitに追跡させたいものはこの中から削除しましょう。
すると…
やっとだ…やっと復活してくれた(;∀; )ヨカッタ…
Sourcetreeでもこの通り。いままでshow.html.erbはいくら変更加えてもここに出てくれなったんですよーやっと出ましたw
おまけ:思い当たる原因
Sourcetreeのファイルステータス欄にて、コミット時にいらないファイルを「無視」や「削除」をしようとしたときにうっかり無視リストに加えてしまった。
こういうのはエラーって言えるのかなぁ…?
でも解決できてやっぱり嬉しかったので満足です^^
ここまで読んでくださり、ありがとうございました。