2017-02-26 4 views
1

私は.gitkeepを使用しようとしましたが、何を試しても機能しません。gitを使ってフォルダ構造を追跡するにはどうしたらいいですか?

* 
!a/.gitkeep 
!*/.gitkeep 
!**/.gitkeep 
!.gitignore 

アイデアは.gitkeepですべてのフォルダを維持することです:私はこのような.gitignoreを持っていた

. 
├── a 
│   ├── aa 
│   │   ├── aaa 
│   │   │   ├── .gitkeep 
│   │   │   └── test.txt 
│   │   ├── .gitkeep 
│   │   └── test.txt 
│   ├── .gitkeep 
│   └── test.txt 
├── b 
│   ├── bb 
│   │   ├── bbb 
│   │   │   └── test.txt 
│   │   ├── .gitkeep 
│   │   └── test.txt 
│   └── test.txt 
└── .gitignore 

は、例えば、私はこのようなフォルダ構造を持っていました。驚いたことに、この設定ではフォルダは追跡されません。

これはなぜ機能しないのですか?

+0

あなただけが必要'.gitkeep'ファイルは他に何も入っていないディレクトリにあります。あなたのケースでは、さまざまな 'test.txt'ファイルがそれらを冗長にします。 – jonrsharpe

答えて

1

これはなぜ機能しないのですか?そのために

、あなたはgitのチェック-無視する-v

第二を持って、it is not possible to re-include a file if a parent directory of that file is excluded

そして*は、他のすべてが議論の余地のルールを除外すること、同様のフォルダを無視します。

.gitkeepのみを除外し(保持されているフォルダの内容を無視する)、ファイルのみを無視してから、フォルダをホワイトリスト化して、最後に除外します。

/** 
!/**/ 
!.gitkeep 

しかし、目標はにあるないに.gitkeepがそれであり、その後は1で任意のフォルダ1を除外するために必要となるフォルダ内のすべてのファイルを無視:

/** 
!/**/ 
!/a/aa/aaa/** 
!/b/bb/bbb/** 
+0

ありがとう! '!/ ** /'がキーです。 '/ **'と '*'は実際には同じ効果があります。 – Wang

関連する問題