如何忽略gitignore中的一些特殊文件?

时间:2013-03-13 08:41:10

标签: git

我想忽略.gitignore中的一些特殊文件。例如。 symTbl.c,会有一些由编译器生成的这种文件,它们位于不同的子目录中。 同时我需要接受所有其他.c文件。

所以我的.gitignore将如下所示:

*
!*/
!*.c
symTbl.c

但是symTbl.c仍然无法忽略。 那怎么办?谢谢!

注意: 我有一些其他文件不应该被跟踪,例如.lzs .bin ...所以我需要首先忽略*然后使用!*。c来跟踪* .c。通过这样做,我不能简单地将symTbl.c放在.gitignore中。

1 个答案:

答案 0 :(得分:1)

你需要放

symTbl.c

在项目根目录的.gitignore文件中。已跟踪的文件不能被忽略。检查git ls-files | grep symTbl.c是否已提交并删除(git ls-files | grep symTbl.c | xargs -d'\n' rm直接删除)

修改

我已经完成了一个新的回购并将这些文件放入其中

# show all files, excluding those in the .git directory
$ tree -a -I .git
.
├── bla.bin
├── bla.c
├── foo
│   ├── bla.bin
│   ├── bla.c
│   └── symTbl.c
├── .gitignore
└── symTbl.c

1 directory, 7 files

我的.gitignore包含你所拥有的:

$ cat .gitignore
*
!*/
!*.c
symTbl.c

正在运行git add .只是在根目录和bla.c目录中添加了不同的foo/文件:

$ git add .
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#   new file:   bla.c
#   new file:   foo/bla.c
#

所以你可能已经提交了symTbl.c个文件?如果是这样,git rm他们将从现在开始被正确忽略。