3

私の.gitignoreファイル:

.DS_Store
temp
!temp/script.txt

ただし、実行git statusすると、temp/ディレクトリが表示script.txtされず、ステージングされていないことが示されます。ファイルのみを表示し.gitignoreます。

# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   .gitignore

私はちょうどgitを学んでいます。どこが間違っているのか分かりますか?

4

2 に答える 2

3

次のように置き換えますtemp

temp/*

これにより、ディレクトリ内のすべてのファイルが無視されます。最初の 2 つのケースではディレクトリが無視され、3 番目のケースでは Git が空のディレクトリを追跡しないため、ほとんどの場合、すべて同じように機能しますtemp。したがって、ディレクトリ自体は無視されます。temp/temp/*

これを説明するために、これは本質的に次のようになりtemp/ますtemp1.txt temp2.txt temp3.txt

temp # anything with the name of "temp"; a directory, a symlink, a file.
temp/ # whole of temp dir
temp/* # temp/temp1.txt temp/temp2.txt temp/temp3.txt

したがって、3番目のケースはあなたのケースで機能します。

否定パターンは、それを覆うパターンの後に配置する必要があります。この場合、 の!temp/script.txt後に来る必要がありますtemp/*。それ以外の場合は適用されません。

したがって、最終的な .gitignore ファイルは次のようになります。

.DS_Store
temp/*
!temp/script.txt
于 2013-09-13T08:43:14.190 に答える
0

ディレクトリは git でバージョン管理されていないことに注意してください

.gitignore を使用する

temp/*
!temp/script.txt

順序が非常に重要であることに注意してください(最初にこれを間違えたので、実行できないとほぼ結論付けました)

于 2013-09-13T08:44:23.800 に答える