忍者ブログ

エンジニア初心者の備忘録

エンジニア初心者が躓いたことハマったことを公開します!

気付いてて無視してた.gitignore奮戦記

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

気付いてて無視してた.gitignore奮戦記

今回は、気付いてて無視してた.gitignore奮戦記です!

まず、経緯からお話ししますと…

まだ、研修でお問い合わせフォーム作ってますが、、、
このお問い合わせフォームに画像アップロード機能とサムネイル表示機能を実装しています。
この実装に関連して、元画像を保存するimagesディレクトリとサムネイルを保存するthumbnailsディレクトリを設置しています。

何度か画像アップロードして、Git管理してみると、
ディレクトリ内の画像も管理されてしまいます!

この画像って、Gitの目的であるバージョン管理には全く必要ないものですよね、

このような、そのディレクトリがないとプログラムによるファイルの出力が失敗してしまうディレクトリ自体は管理下に置いておきたいけど、プログラムがそこに出力したファイル群は管理外にしたい、というケースありますよね。
例えば、今回のようなディレクトリやキャッシュディレクトリ、一時ディレクトリのようなものですね。

色々、調べましたが、微妙に異なる方法が色々あり、奮戦しました。




色々検討して、今回は、下記の方法で解決しました。

ちなみに、contact_form/images/ とcontact_form/thumbnails/という2つのディレクトリを空の状態でGitの管理下に置きたいという前提です。

まず、contact_form/images/ .gitkeepとcontact_form/thumbnails/.gitkeep を作成します。

//ローカルリポジトリへディレクトリを移動します。
$ cd contact_form/

//.gitkeepという空ファイルを今回対象の2つのディレクトリに作成します。
$ touch contact_form/images/.gitkeep
$ touch contact_form/thumbnails/.gitkeep

次に、.gitignoreの内容を編集します。

//.gitignoreファイルを開いて編集します。
$ vi .gitignore (←上に引き続いて今、contact_formディレクトリにいます!)

==.gitignoreファイル==

images/*
thumbnails/*
!.gitkeep

=============

これで、解決しました!!

ちなみに、これは、ディレクトリ階層が同一のレベルの階層の場合の方法となります。
(ディレクトリ階層が複数の異なるレベルの階層の場合は、また、異なる方法になるようですので注意が必要ですね。)

この、.gitignoreの存在にはずっと気付いてましたが、とりあえずの処理に関係なさそうなので、無視してましたが、ここで奮戦することとなりました。

(追記)
なぜ、このようなことを考えないといけないGitの性質を書いてませんでした!
Git はデフォルトで空のディレクトリを無視するんです!


【参考サイト】
http://quartet-communications.com/info/topics/13642
http://d.hatena.ne.jp/yun_kichi/20100106/1262779967
PR

コメント

プロフィール

HN:
プラムザ 太郎
性別:
非公開

P R