吉蒂格尔并不是没有跟踪的

时间:2014-11-12 15:25:43

标签: git github version-control push gitignore

所以,我很确定我做错了什么,但我能意识到这一点。

我的 .gitignore { content/data.db }

当我更改此文档并执行git status时,我得到:

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

    deleted:    content/data.db

预期结果:不跟踪此文件。

当然,如果我git add -A && git commit -m"this is a test" && git push,文件会被推送到回购站。

我不知道.gitignore的错误。

提前致谢。

1 个答案:

答案 0 :(得分:2)

你需要解开文件,然后git会很乐意使用.gitignore中的模式忽略它。如果已经跟踪了某个文件,即使它在ignorelist中,也不会忽略对它的更改。从当前状态来看,很明显您已从文件系统中删除了该文件,但尚未取消删除。

所以,运行以下命令:

git rm --cached content/data.db
git commit -m "removed db file"

通常,最好使用git rm标志运行--cached命令,以便不删除文件的本地副本。

因为,在您的情况下,您已经从文件系统中删除了有问题的文件,git rm content/data.db也可以正常工作。

<强> 修改

如下面的评论所述,请检查您的.gitignore是否将该条目设为{ content/data.db }。因为{和空格的条目会变得不正确。

只需一行,content/data.db中包含文字.gitignore。确保忽略规则之前或之后没有冗余空格。

git的工作方式,.gitignore中的每个完整行都被视为fnmatch的模式,任何多余的字符,如空格甚至以#开头的注释都会改变模式本身,导致文件不被忽略。