特定のファイルを Git のバージョン管理の対象から外すための仕組みとして、gitignore メカニズムが用意されています。 そのための設定ファイルは、下記のようなパスから検索され、最初に見つかったものが優先的に使用されます。
.gitignore
ファイル.git/info/exclude
ファイルcore.exludesfile
でパスを指定したファイルワークツリー内に置く .gitignore
ファイルは、どの階層のディレクトリにも置くことができ、より下位のディレクトリにある .gitignore
ファイルによる設定が優先されます。
プロジェクト全体で設定を共有したい場合は、.gitignore
に設定を記述し、これをコミットしてチームメンバと共有します。
特定のリポジトリで、自分用に設定を行いたい場合は .git/info/exclude
に設定を記述します。
どのリポジトリにも共通した、自分専用の設定を用いたい場合は、例えば $HOME/myconf/git-excludes
といったファイルに設定を記述しておき、git config
で以下のように参照設定しておけばよいでしょう。
$ git config --global core.excludesfile "$HOME"/myconf/git-excludes
上記の例では、グローバルな設定値にしていますが、--global
オプションを外せば、特定のリポジトリ用に設定することも可能です。
# コメント行
aaa # aaa というファイル、あるいはディレクトリを無視。
bbb/ # bbb というディレクトリを無視。
/ccc # .gitignore ファイルのあるディレクトリからの相対パスで
# ccc というファイル、あるいはディレクトリを無視。
# つまり、この場合は .gitignore ファイルと同じディレクトリ内にある
# ccc というファイル、あるいはディレクトリを示す。
*.class # 名前が .class で終わるファイルを無視
*.[ao] # 名前が .a あるいは .o で終わるファイルを無視
!ddd.o # ただし、ddd.o というファイルは無視「しない」
!/eee.a # .gitignore ファイルと同じディレクトリの eee.a というファイルは無視「しない」
デフォルトでは、以下のような一時ファイルまで git status
コマンドなどで認識されてしまうので、これらのファイルを版管理の対象からはずしておくとよいです。
hello.txt~
*.a
や *.o
ファイル*.class
ファイル.hello.txt.swp
のようなファイル.pc
例えば、作業ディレクトリのルートにある、.git/info/exclude
に以下のように記述します。
*~
*.[ao]
*.class
*.swp
.pc/
プロジェクトによっては、コンパイル済みの *.a
ファイルなどもコミットするかもしれないので、*.[ao]
より *.o
の方がよいかもしれません。
gitignore によってバージョン管理の対象外にされているファイルを、強制的に git add
するには、下記のように -f
オプションをつけて実行します。
$ git add -f vendor_library.so