.gitignore
と.gitkeep
の違いは何ですか?それらは違う名前の同じものなのか、それともそれらが異なる機能を果たすのか?私は.gitkeep
について多くの文書を見つけることができないようです。
Gitの機能ではないので、.gitkeep
は文書化されていません。
Git 完全に空のディレクトリを追加することはできません 。 Gitで空のディレクトリを追跡したい人は、これらのディレクトリに.gitkeep
というファイルを置くという規約を作成しました。ファイルは何でも呼ばれる可能性があります。 Gitはこの名前に特別な意味を割り当てません。
追跡するために空のディレクトリに.gitignore
ファイルを追加するという競合する慣習がありますが、目標は空のディレクトリを無視するのではなく保持することであるため、混乱を招くと考える人もいます。 .gitignore
は、追跡されていないファイルを探すときにGitによって無視されるべきファイルをリストするためにも使用されます。
.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
( '#'はコメントを表します。)
.gitignore
gitがリポジトリに追加/更新しない、または更新しない、ディレクトリ内のファイルのリストを含むテキストファイルです。
.gitkeep
Gitはリポジトリから空のディレクトリを削除したり追加したりしないので、.gitkeepはリポジトリに空のディレクトリを保持するためのハックのようなものです(正式にはgitの一部と命名されているとは思いません)。
touch /path/to/emptydirectory/.gitkeep
を実行してファイルを追加するだけで、gitはこのディレクトリをリポジトリに保持できるようになります。