2

*.libは.gitignoreにあると確信しています

cat .gitignore | grep lib
*.lib

$ ls lib
TLib.lib  TLib_d.lib


$ git status
# On branch master
nothing to commit (working directory clean)


$ git clean -dfX

$ ls lib
TLib.lib  TLib_d.lib     // the issue is here...

これらの.libファイルが削除されないのはなぜですか?

4

2 に答える 2

1

この動作は、ディレクトリにgitによって追跡されるものが何もない場合にのみ発生します。

gitによって追跡されるものが常に含まれておらず、ディレクトリを移動させたい場合は、ディレクトリを.gitignoreファイルに追加します。

ディレクトリを残したいがその内容を残したい場合は、ディレクトリにgitによって追跡される空のファイルを追加する必要があります。このための通常の選択は、空の.gitignoreファイルです。

于 2012-08-19T05:53:12.483 に答える
1

Gitは、インデックスにないディレクトリを検出すると、ファイルの検索を停止します。しかし、上記の場合、無視パターンに一致するすべてのファイルを検索するようにgitに指示しています。したがって、すべてのディレクトリと検索ファイルに移動することをお勧めします。

これもgit ls-files動作と一致します。与えられた:

$ tree
.
├── foo.o
└── lib
    ├── TLib_d.lib
    └── TLib.lib

1 directory, 3 files

$ cat .gitignore
*.lib

次のコマンドを実行します。

$ git ls-files -o
foo.o
lib/TLib.lib
lib/TLib_d.lib

$ git ls-files -o -i --exclude-standard
lib/TLib.lib
lib/TLib_d.lib

$ git clean -n
Would remove foo.o
Would not remove lib/

$ git clean -nd
Would remove foo.o
Would remove lib/

$ git clean -nX

最後のコマンドはファイルを出力しません。しかし、もしそうならそれは素晴らしいでしょう:

$ git clean -nX
Would not remove foo.o
Would not remove lib/
Would remove lib/TLib.lib
Would remove lib/TLib_d.lib
于 2012-08-19T08:43:34.067 に答える