ホーム > Git
Git アーカイブ
ホームディレクトリをGitで簡単に管理するための.gitignore活用法
- 2011年1月4日 10:00 AM
- Git

さて、まったくブログを更新していないtfmagicianです。
こんにちは。
先月は1記事しか書いてないですね。今年は月10記事以上を目標に、楽しみながら書いていきます。
今日は、Gitをネタに取り上げます。
前回はプロジェクトに関するGitネタでしたが、今回は個人的なモノ。
あなたの宝物が詰まったホームディレクトリをGitで管理してみます。
ホームディレクトリの”なに”を管理するか
これは人によって異なります。
例えば、あなたがMac使いで、Mac上でGitを使うというなら、ドキュメントも管理したくなるかもしれない。
例えば、あたながLinux使いなら、設定ファイルだけGitで管理出来れば良いかもしれない。
.gitignoreをうまく設定出来れば、どちらのパターンも対応出来ます。
ただ、.gitignoreを設定する前に、自分が”なに”を管理したいかは決めておきましょう。
でないと、大変なことになります。
.gitignoreとは
Gitを使ったことがある人であれば、.gitignoreはお馴染みです。
その名のとおり、”Gitに無視させるファイル“を指定できる設定ファイルです。
試しに、.gitignoreを作ってみます。
$ mkdir ignore_test $ cd ignore_test $ git init $ touch first_file $ git commit -a $ touch .gitignore
リポジトリを初期化したら、.gitignoreファイルを作ります。
中身は以下の通りに記述してください。
/tmp
この.gitignoreもGitリポジトリが管理してくれます。
.gitignoreもコミットしておきます。
$ git add .gitignore
続けて、以下のコマンドを打ってください。
$ mkdir tmp $ git status
Gitの管理対象から、tmpディレクトリが除かれています。
(変更されたファイル一覧にtmpディレクトリがないはずです。)
このように、普通はリポジトリには含めたくないファイルを.gitignoreで指定します。
ホームディレクトリに.gitignoreを置く
さて、初心者向けの説明だったので、知っている人は飽き飽きしてきたと思います。
そんな人のために、早速、私のホームディレクトリに置いてある.gitignoreを晒します。
# 全てのファイルを一度、無視する。 /* # さらに、ドットから始まる設定ファイルを無視する。 /.* # しかし、"無視したくないファイル"は以下に"![ファイル名]"で指定する。 ##### Gitで管理するファイルリスト ##### !/.bash_aliases !/.bash_colour.example !/.bash_profile !/.bashrc !/.selected_editor !/.vimrc !/.vim !/.gitignore !/.gitconfig !/.gitmodules !/bin # 上記に"無視したくないファイル"としてリスト化した中から、さらに"無視したいファイル"を指定する。 /.vim/.netrwhist
勘の良い人はわかると思います。
ここで重要なのは”/*“と”/.*“、それに”エクスクラメーションマーク(!)“です。
行の先頭にエクスクラメーションマークを書くと、”無視したくないファイル“を示せるんです。
この書き方をすることで、ごった返したホームディレクトリから自分の指定したファイルだけ、Gitに管理させることが出来ます。
新しく管理したいファイルを追加したい場合は、”Gitで管理するファイルリスト“以下にファイル名を追加すればOKです。
それで、Gitがファイルを追跡するようになります。
ホームディレクトリの管理に役立つ.gitignoreの設定
.gitignoreは、複雑な設定が出来ません。
基本的な設定は以下の通りです。
# 全てのtmpディレクトリを無視する。 tmp/ # トップレベルのtmpディレクトリのみ無視する。 /tmp # 全てのphpファイルを無視する。 *.php # 全てのtmpディレクトリのphpファイルのみ無視する。 tmp/*.php # トップレベルのtmpディレクトリのphpファイルのみ無視する。 /tmp/*.php
これに先程のエクスクラメーションマーク(!)を使えば、特定の拡張子のファイルや特定のディレクトリのみ管理できます。
トップディレクトリに置く.gitignoreだけでは、この程度しか設定出来ません。
しかし、.gitignoreはサブディレクトリに置くことも出来ます。
$ cd ~/ $ cat .gitignore # documentsディレクトリのみ、Gitで管理する。 /* /.* !/documents $ cd ~/documents $ cat .gitignore # documentsディレクトリの中の全ての.DS_Storeファイルを無視する。 .DS_Store
これで、”documentsディレクトリはGit管理するが、その中の.DS_Storeは無視する“という設定が出来ました。
.gitignoreは、なかなか扱いにくい子です。
しかし、うまく使って自分のホームディレクトリを効率的に管理しましょう。
参考ページとプロジェクト
ホームディレクトリをGitで管理するために、以下のページが参考になります。
また、私は使っていませんが、こんなプロジェクトもあるようです。
こんなことを考えるのは、私だけではないんですね。
皆さんもGitでホームディレクトリを管理してみてください。
Gitで管理すると、サーバ間の設定共有も楽々です。
ちなみに、私の設定ファイルはgithubに載せてありますよ。
ホーム > Git
- エキスパートPythonプログラミング読書会 第二期 07の募集を開始しました! http://t.co/DuVQ32jM #expertpython 2 days ago
- 受付を撤収したので、遅れてくる方は @sanojimaru か、 @tfmagician まで声をかけてください。 #expertpython 3 days ago
- http://t.co/e4N59JH3 4章ですね、募集ページを修正しました。 #expertpython 3 days ago
- More updates...
- 無印良品の高度なFacebook連携がさすがだと思った件 « Looops 直人の備忘録
- Node.jsがどうして注目されているのか、もしくはどうして他のサーバサイドJavaScriptはスルーされているのか - id:anatooのブログ
- 0から始めるiPhoneからのWordPress更新術。第9回 終わりに。一連の流れ ...
- shell.vim 0.9.6 -- Improved integration between Vim and its environment (fullscreen, open URL, etc)
- Cakephp auth refresh websites and posts on cakephp auth refresh
- さよなら、iPhone。 日本でも訴訟されて発売されるGalaxyS2の凄さがわかる動画 alpha device
- フィードからの情報をデスクトップ通知してくれるChrome拡張機能「RSS Alert」
- PHPとアジャイル開発の勉強会を開催しました | 48JIGEN
- レノボ、Android 採用の ThinkPad タブレットを今夏発売へ。Windowsタブレットは年内
- 致命的すぎるバグがgithubで話題 « A-Listers
