Help us understand the problem. What is going on with this article?

.gitignoreの存在を我々は見過ごしてはならない。

More than 5 years have passed since last update.

.gitignoreとは?

.gitignoreはGitのリポジトリのルート(.gitフォルダと同じ位置)にあるときに使えます。

Railsの場合

Railsアプリとかだと、logディレクトリはバージョン管理したくないから

log/

とか書いてある。
同じように、バージョン管理の必要性がなかったり、していると不都合がおきる、
- sqlite3のDBファイル
- キャッシュが入るtmpフォルダ
- プロセス監視のpidファイル
等はignoreしておくべきです。(デフォルトで.gitignoreに書かれていますが)

.gitignore自体はignoreにするべき?

それを ignore するなんて とんでもない!
.gitignoreはプロジェクト全体で共有しておくと、環境が変わっても(パソコンが変わっても)ignoreされるファイルやフォルダは 一緒な"はず" なので、ignoreはしなくて大丈夫です。

一緒な"はず" ?

環境が変わるってことはもしかしたら他人が使うこともあるのです。
たとえば、僕みたいにEmacsとVimとSublimeを併用するときには、同じ人でありながら違う環境でコードを書くことさえあります。一般的にあまりないですが。

環境が違うとは

例えば使っているエディタが違うときがありますね。
これは、Vimにおける*.swpファイルやEmacsにおける*~ファイルが該当しますね。
こういうのはもちろん ignore しておくべきですが、
プロジェクト毎、リポジトリ前に .gitignore

*~
*.swp

と書くのは面倒ですしおすし、
さらにプロジェクトメンバーにEmacs使いとVim使いが共存している中で、共通で見ることができる .gitignore*.swp*~などを記述してそれぞれのエディタの痕跡が残ってしまうと戦争になりかねません。

毎回、同じファイルを ignore するのは面倒、でも戦争も起こしたくはない

基本的に、DRY(Don't repeat yourself)という考え方で世の中は回っています。
つまり同じ事は一回だけにしようってことですね。GitでもDRYな .gitignore の書き方ができます。
まずはホームフォルダに.gitignore.gitconfigファイルをつくります。
それぞれ中身は

.DS_Store
*~
*.swp

こんな感じで書いて

[core]
    excludesfile = ~/.gitignore

と書いておきます。
すると、Gitさんは基本的にホームフォルダにある.gitconfigを見に行くので。

  1. excludefileで指定された.gitignoreをみる
  2. リポジトリのルートにある.gitignoreをみる

という順序で見ていくので、
自分の環境に依存して、かつGitではバージョン管理をしたくない時にはホームフォルダの.gitignoreにファイルを記述して、
プロジェクトでバージョン管理したくないファイルをリポジトリ内にある.gitignoreに記述してメンバー全員で共有する

というのがベストプラクティではないでしょうか。

あわせて読みたい

Gitの設定

asonas
こんにちは!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした