web-dev-qa-db-ja.com

.gitignoreと.gitkeepの違いは何ですか?

.gitignore.gitkeepの違いは何ですか?それらは違う名前の同じものなのか、それともそれらが異なる機能を果たすのか?私は.gitkeepについて多くの文書を見つけることができないようです。

1641
Matty

Gitの機能ではないので、.gitkeepは文書化されていません。

Git 完全に空のディレクトリを追加することはできません 。 Gitで空のディレクトリを追跡したい人は、これらのディレクトリに.gitkeepというファイルを置くという規約を作成しました。ファイルは何でも呼ばれる可能性があります。 Gitはこの名前に特別な意味を割り当てません。

追跡するために空のディレクトリに.gitignoreファイルを追加するという競合する慣習がありますが、目標は空のディレクトリを無視するのではなく保持することであるため、混乱を招くと考える人もいます。 .gitignoreは、追跡されていないファイルを探すときにGitによって無視されるべきファイルをリストするためにも使用されます。

2959
Wooble

.gitkeepは単なるプレースホルダーです。 gitはファイルだけを追跡するので、ダミーファイルなので、gitはディレクトリについて忘れません。


空のディレクトリが欲しくて、それがgitに対して「きれい」であることを確認するならば、以下の行を含む.gitignoreを作成してください:

# .gitignore sample 
###################

# ignore all files in this dir...
*

# ... except for this one.
!.gitignore

1種類のファイルだけをgitに表示させたい場合は、.gitignoreファイルとすべての.txtファイルを除いて、すべてを除外する方法の例を次に示します。

# .gitignore to keep just .txt files
###################################

# filter everything...
*

# ... except the .gitignore...
!.gitignore

# ... and all text files.
!*.txt

( '#'はコメントを表します。)

273
sjas
.gitignore

gitがリポジトリに追加/更新しない、または更新しない、ディレクトリ内のファイルのリストを含むテキストファイルです。

.gitkeep

Gitはリポジトリから空のディレクトリを削除したり追加したりしないので、.gitkeepはリポジトリに空のディレクトリを保持するためのハックのようなものです(正式にはgitの一部と命名されているとは思いません)。

touch /path/to/emptydirectory/.gitkeepを実行してファイルを追加するだけで、gitはこのディレクトリをリポジトリに保持できるようになります。

112
Jim Munro