こんにちは、Webプログラマの篠田です。
ALAKI社内では、ソースコード(HTML,CSS,SASS,JavaScript,PHP)をGitで管理しています。
Gitで管理することで、ソースコードの「先祖返り」が起こらなくなり生産効率もあがっています。
そんな中で、コミットしたいファイルがあるにも関わらず、Git管理できないファイルという摩訶不思議な状況が発生する場合があるので、その対処方法をご紹介します。
この記事の目次
ファイルを「無視」する「.gitignor」
「Git」には、管理をする必要のないファイルを予め、管理対象から除外する「.gitignor(ギットイグノア)」というファイルが存在します。
「.gitignor」ファイルに、無視したいフィアルの拡張子やフォルダ名を書き込むことで、設定以降は管理対象から除外させることができます。
「.gitignor」は、プロジェクトごとに管理することができます。
「.gitignor」がないのに「無視」される現象
通常、「.gitignor」はプロジェクトを進めていく中で、除外対象を増やしていくファイルですが、新規で立ち上げたプロジェクトのファイルが「表示されない」という現象が発生する場合があります。
もちろん、この時点では「.gitignor」は作成されていませんので「無視」されることは無いはずです。
新規プロジェクトでファイルが無視される原因
実は、「.gitignor」には「すべてのプロジェクト」に対して「無視」の設定を行う「.gitignore_global」というファイルが存在します。
この「.gitignore_global」に書き込まれた除外設定は、ここのプロジェクトに「.gitignor」がなくても反映されるというものです。
そのため、「.gitignore_global」に「間違って」別のプロジェクトで除外設定を行った内容がプロジェクトをまたいで、有効になるということがあります。
ちなみに、「.gitignore_global」は「SourceTree」をインストールした時に、ファイルがなければ自動的に作成されます。
この時に「無視」されるのは下記のようなファイルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#ignore thumbnails created by windows Thumbs.db #Ignore files build by Visual Studio *.obj *.exe *.pdb *.user *.aps *.pch *.vspscc *_i.c *_p.c *.ncb *.suo *.tlb *.tlh *.bak *.cache *.ilk *.log *.dll *.lib *.sbr |
※Mac版「SourceTree」のときになります。
既に「.gitignore_global」が存在する場合は、書き換わる心配はありません。
ただし、インストール時に書き換えるかどうかのアラートが表示されますので、内容はご確認ください。
「.gitignore_global」の編集で問題解決
ファイルが「無視」されている原因が分かれば、対処は可能です。
「.gitignore_global」の中から、認識して欲しいファイルを見つけて、記述を削除するだけです。
「.gitignore_global」への下記のとおりです。
1 2 |
$ cd ~ $ vi .gitignore_global |
※Mac環境での編集作業方法になります。
「SourceTree」による「.gitignore」の運用
今後、同じ問題が発生しないように、再度「.gitignore」を考えてみましょう。
「SourceTree」では、幾つかのタイミングで「.gitignore」か「.gitignore_global」に保存することを求められます。
これを間違うと、今回のような問題が発生してしまいます。
個別に「.gitignore」に追記する
ファイルステータスから、1つだけ「無視」したいファイルを選択し、「無視」を選ぶと下記のようなポップアップが表示されます。
下にある「この無視エントリの追加先」というところに注意しましょう。
グローバル無視リスト | 「.gitignore_global」に保存される |
このリポジトリのみ | 「.gitignore」に保存される |
複数を「.gitignore」に追記する
同じくファイルステータスから、複数のファイルを選択して「無視」を選ぶと下記のようなポップアップが表示されます。
下にある「ボタン」に注意しましょう。
すべてのリポジトリで無視する | 「.gitignore_global」に保存される |
このリポジトリでは無視する | 「.gitignore」に保存される |
まとめ
「.gitignore」は大変便利な機能なのですが、考えなしに「Yes」をクリックしているととんでもないところに保存され、思わぬ場面でファイルがコミットできないという場合があります。
どの処理が、どこに保存されるかをしっかり理解して、より便利にGitでファイルのバージョン管理をしていきましょう。
現場の業務フローに寄り添ったWebシステムをお求めなら、私たちALAKIにご相談ください。
ALAKIは経営者様が感じている問題点と、実際にWebシステムを利用される現場スタッフ様が直面している課題を、弊社システムエンジニアが丁寧に聞き取り、お客様と共にシステムを作り上げていきます。
業務改善が実現できるWebシステムをお求めの方は、是非ALAKIにご相談ください。