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


1927

違いは何ですか.gitignoreとは.gitkeep?それらは異なる名前で同じものですか、それとも両方とも異なる機能を果たしますか?

に関するドキュメントがあまり見つからないようです.gitkeep

回答:


3441

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

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

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


414
READMEそれ以外の場合は空のサブディレクトリに、そのサブディレクトリが何のために使用されるのかについての情報を含むファイルを配置する方が良い解決策ではないでしょうか?というファイル.gitkeepが実際にはgitの一部ではないことは混乱を招くようです。
tamouse 2012

423
@tamouseを何度も使用すると、空のディレクトリのパス(たとえば、フォルダの名前)でその目的を十分に表現できます(例:テンプレート/キャッシュ、アップロード/サムなど)。これらの場合、それぞれにreadmeを入れるのは冗長だと感じます。
HalilÖzgür2013年

16
空のディレクトリを追跡したい人は、ディレクトリを作成する必要があること、またはビルドツールまたはディレクトリの存在を必要とするツールを使用してディレクトリを作成する必要があることをREADMEで示す必要があります; /

32
@tamouse、@omouse:.gitignore2行のファイル:*!.gitignoreより何が起こっているかを伝えるための十分な明瞭さを超えています。さらに詳しい説明が必要な場合は、# 構文を使用してファイルの先頭にコメントを追加します。
Droogans 2013

63
gitは空のフォルダーを追跡しない唯一のソース管理システムではないので、人気のあるRailsフレームワークは、これらの空のフォルダーを保持.keepする代わりにファイルを使用してこの規則をわずかに変更したことに注目する価値.gitkeepがあります。詳細はこちら:github.com/rails/rails/issues/2800
Claudio Floreani 2013年

330

.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

(「#」はコメントを示します。)


3
私はこの練習が好きです。これらのディレクトリにソースコードがあった場合、.gitkeepの必要はなく、一般にtemp / cache / userコンテンツであり、テスト中にとにかく生成され、それらのファイルも.gitignoreする必要があります
chrisan

1
なぜあなた!は前に必要.gitignoreですか?それはドットをエスケープするためですか?
ウィル

7
@Will-いいえ、!通常はプログラミングで行うように、次の部分を否定します。
sjas

3
置く必要はありません!.gitignore(単に確認フォルダが存在するようにするには、すべて、または何も無視する「*」)適切な内容で、それを追加したファイルを無視するのgitで、いずれか、それを編集し、ファイルを追加、または力さらなる例は
AD7six 2014年

13
あなたのリンクから:Since the git ignore file is already in the repo it is not necessary to not-ignore it - it is already tracked.------そうでない場合、そしてあなたが強制的な追加を行わない場合、あなたはそれを忘れるかもしれません。些細なケースでは問題ありませんが、それより大きなファイルの場合は、混乱する可能性があります。使用!.gitignoreすると、自分の足を撃ちにくくなります。過去に火傷したことがあるので、私はそれを好みます。
sjas 2014年

125
.gitignore

gitが無視するか、リポジトリで追加/更新しないディレクトリ内のファイルのリストで構成されるテキストファイルです。

.gitkeep

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

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


18
あなたは多くのとして持つことができます.gitignoreあなたが望むとおりにするたびに、フォルダごとに完全なパスを指定しない場合、S。
sjas 2012

1
空のディレクトリリストを.gitkeepファイルに記述しようとしていますが、空のディレクトリは追跡されません.gitkeep。フォルダのみがファイルの存在を追跡します。なんでそうなの ?
Pardeep Jain、2018

2
.gitkeepは.gitignoreのようには機能しません。保持するディレクトリのリストではありません。保持したいディレクトリにあるのは、単に空のファイルです。.keepなど、任意の名前を付けることができます。したがって、/ foo / barのようなディレクトリを作成でき、gitkeepファイルは/foo/bar/.gitkeepになります
Jim Munro

@sjas複数.gitignoreのs を使用すると、毎回すべてのフォルダへのフルパスを指定する必要がなくなりますか?私は明らかな何かを見逃していると思います。
Willwsharp
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.