我想忽略.gitignore中的一些特殊文件。例如。 symTbl.c,会有一些由编译器生成的这种文件,它们位于不同的子目录中。 同时我需要接受所有其他.c文件。
所以我的.gitignore将如下所示:
*
!*/
!*.c
symTbl.c
但是symTbl.c仍然无法忽略。 那怎么办?谢谢!
注意: 我有一些其他文件不应该被跟踪,例如.lzs .bin ...所以我需要首先忽略*然后使用!*。c来跟踪* .c。通过这样做,我不能简单地将symTbl.c放在.gitignore中。
答案 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
他们将从现在开始被正确忽略。