web-dev-qa-db-ja.com

Gitサブフォルダーを除くディレクトリ内のすべてを無視する

これは私のフォルダ構造です:

data/
    .gitignore
    uploads/
        .gitignore

フォルダーをコミットしますが、フォルダー内のファイルはコミットしません。

そこで、すべてのフォルダーに次の内容の.gitignoreファイルを追加します。

# Ignore everything in this directory
*
# Except this file
!.gitignore

問題は、*がディレクトリでも一致するため、gitはdata/.gitignoreのみを追跡することです。

32
nickel715

解決方法は非常に簡単です。!*/に.gitignoreファイルを追加すると、現在のフォルダー内のファイルのみが無視されます

# Ignore everything in this directory
*
# Except this file
!.gitignore
# Except folders
!*/
36
nickel715

_.gitignore_ファイルを誤用しないでくださいmisuse。これを実行するデフォルトの方法に固執すると、後の開発者がプロ​​ジェクトにすばやく入ることができます。

  1. ファイルなしでコミットするフォルダーに空の_.gitkeep_ファイルを追加します
  2. フォルダを除外しますが、main_.gitkeep_ファイルから_.gitignore_は除外しません。

    _folder/*
    !folder/.gitkeep
    _

これは、フォルダー内のすべてのファイルを無視しますが、_.gitkeep_ファイルは無視しません。これで、フォルダーはコンテンツとして_.gitkeep_ファイルのみでコミットされます。

55
kaiser