0

PDF 画像を含む LaTeX ドキュメントを作成しています。そのため、生成された PDF は無視しますが、ソース PDF は無視したいと思います。私は実際にこれを行うことができましたが、最初に試したことがうまくいかなかったので、その理由を知りたいです.

ドキュメントには、部分的に次のように記載されています。

パスと同じディレクトリまたは任意の親ディレクトリにある .gitignore ファイルから読み取られたパターン。上位レベルのファイル (ワーク ツリーのトップレベルまで) のパターンは、ディレクトリまでの下位レベルのファイルのパターンによってオーバーライドされます。ファイルを含みます。これらのパターンは、.gitignore ファイルの場所に相対的に一致します。プロジェクトは通常、そのリポジトリにそのような .gitignore ファイルを含み、プロジェクト ビルドの一部として生成されたファイルのパターンを含みます。

.gitignore...しかし、浅いファイルを上書きする深いファイルを取得できないようです。私が見ているものを再現するためのコマンドの簡単なシーケンスは次のとおりです。

~% mkdir git-test
~% cd git-test
~/git-test% git init
Initialized empty Git repository in /home/dmwit/git-test/.git/
~/git-test% echo '*.pdf' >.gitignore
~/git-test% mkdir images
~/git-test% touch images/.gitignore
~/git-test% git add .gitignore images/.gitignore 
~/git-test% git commit -m "example .gitignore files"
[master (root-commit) 8c7e91d] example .gitignore files
 2 files changed, 1 insertion(+)
 create mode 100644 .gitignore
 create mode 100644 images/.gitignore
~/git-test% touch images/foo.pdf
~/git-test% git status
# On branch master
nothing to commit, working directory clean

この後、作業ディレクトリがきれいなのはなぜですか? の空のファイルが の.gitignoreファイルをgit-test/images/上書きしてimages/、そのディレクトリの何も無視されないようにすべきではありませんか? (また、価値があるのは、 を削除した後git-test/.gitignore、新しいpdfが に表示されるgit statusため、グローバルな除外がこれに影響しているとは思わないことです。)

4

1 に答える 1

2

git.gitignoreサブディレクトリ内の完全なファイルを上書きしません。これらのファイルの内容を現在の無視ルールに追加します。あなたの特定のケースでは、そのサブディレクトリ(およびそのサブディレクトリのいずれか...)を処理するときに空の.gitignoreファイルが無視リストに組み込まれますが、そのファイルにはルールがないため、何もしません。"!*.pdf"a)そのファイルを入れて、そこにある PDF ファイルを無視しないように指示するか、b) トップレベルの無視ルール.gitignoreを取り除き、ビルド プロセスを再配置して、生成された PDF ファイルを別のディレクトリに入れることをお勧めします (例: ) そして、そこに "*.pdf" ルールを入れます。*.pdfoutput/.gitignore

于 2013-11-07T17:16:14.087 に答える