0

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

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

*
!*/
!*.c
symTbl.c

但仍然不能忽略 symTbl.c。那怎么办?谢谢!

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

4

1 回答 1

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他们和他们将从现在开始被适当地忽略。

于 2013-03-13T08:44:53.187 回答