1

我的 .gitignore 有问题。我有一个像这样的目录树:

/djangoproject
    venv
        bin
            startgunicorn.sh
        djo
    www
        static
        analytics
    .git
        .gitignore

我的 .gitignore 内容如下:

../www/analytics
../venv/bin
../venv/build
../venv/include
../venv/lib
../venv/local
*.pyc

当我

git add ../*或者git add -A

git push

我不希望startgunicorn.sh或我的analytics目录被推,但我确实想要djo并且static成为。这没有发生——我的 gunicorn.sh 文件不断更改为本地机器的文件。我的错误在哪里?

4

2 回答 2

4

我以前从未见过有人在子目录中放置.gitignore文件。.git据我所知,如果您希望将规则应用于整个存储库,它应该位于根目录中。

GitHub说如下:

请注意,您可以在任何子路径中创建 .gitignore 以将其规则应用于该路径。有时,一个空的 .gitignore 文件用作空路径的占位符,例如强制 git 生成一个 log/ 路径供您的开发环境使用。

按照这个逻辑,所有这些规则都将从 .git 文件夹向下应用。我可以看到你想要做什么,但我以前从未见过它这样做过。

我会将 .gitignore 放在存储库的根目录中,并让它看起来像这样:

www/analytics
venv/bin
venv/build
venv/include
venv/lib
venv/local
*.pyc

我希望这样做是正确的。

此外,值得牢记这一点:

请注意,在将规则添加到此文件以忽略它之前,git 不会忽略已经跟踪的文件。在这种情况下,必须取消跟踪文件,通常使用 git rm --cached 文件名

如果您添加了您希望忽略的那些文件的旧版本,您可能需要这样做。

于 2013-08-05T14:08:07.157 回答
0

也许尝试将 .gitignore 放在主项目的目录中(.git 目录所在的位置)并在路径的开头删除“../”。

如果这没有帮助尝试添加

venv/bin/* 

到你的 .gitignore。

于 2013-08-05T14:11:33.263 回答