2

次のようなディレクトリ構造があります。

root/
  .gitignore
  subdir/
    .gitignore
    subsubdir1/
      file.xml
      image.png
    subsubdir2
       file.xml
       image.jpg

subdirXML ファイル以外のすべてのファイルを無視したい。2番目.gitignoreは次のようになります。

*                   # ignore everything in this directory and its subdirectories
!*/                 # do not ignore subdirectories
!*.xml              # do not ignore xml files
!.gitignore         # and of course have this .gitignore file included too

これと SO および他のサイトのさまざまな投稿によると、これは問題なく機能するはずですが、何らかの理由で、フォルダー内git statusのすべてのファイルが追跡されていないことがわかります。subdir

git rm --cached追加される前に追跡されたすべてのファイルを削除するために使用し.gitignoreましたが、それでもうまくいきませんでした。

これを修正する手がかりはありますか?

PS: 重要な場合、私は Windows で git を使用しています。

4

1 に答える 1

3

.gitignore はインライン コメントをサポートしていません。コメントは、独自の行で開始する必要があります。


!*/ を削除する必要があります。これにより、その前の行が元に戻されます。

subdirs ではなく subdir 内のすべてを無視する場合、その行は次のようになります。

!/*

subdir/subsubdir2/image.jpg のようなファイルを無視したい場合は、その行を省略できます。

空のディレクトリ (または内部のすべてのファイルが無視される場所) は git に追加されません。

.gitignore は自動的に除外されるため、最後の行を省略できると思います (私の Linux システムで確認しました)。

これは subdir/.gitignore に残ります:

*
!*.xml
于 2013-04-19T20:33:14.617 に答える