有没有办法将目录添加到Git,但是在.gitgnore中排除了扩展名?
例如,当我执行命令添加目录,例如
时git add console/*
git以响应回应
$ git add console/*
The following paths are ignored by one of your .gitignore files:
console/networkprobing.ppu
console/opsdatamodule.lrs
console/opsdatamodule.o
console/opsdatamodule.ppu
console/rcacsSystemDM.compiled
console/rcacsSystemDM.o
console/rcacsSystemTestProcs.o
console/rcacsSystemTestProcs.ppu
Use -f if you really want to add them.
fatal: no files added
如何命令自动排除.gitignore扩展名? 还有其他选择可以通过吗?
答案 0 :(得分:10)
git add console/*
问题是通配符是通过shell globing扩展的,而不是直接传递给git,所以git-add实际上是传递给控制台目录[1]中的每个文件。因为git-add正在接收目录中的每个文件作为参数,所以它认为你可能真的试图添加一个被忽略的文件,这就是为什么会有一个警告,并且它提示使用-f,如果这是你真正想要做的事情
解决方案是不使用shell globing而是直接传递目录。
git add console
同样,将所有内容添加到repo(包括以'。'开头的文件)除了忽略文件[2]到repo之外的正确方法是使用git add .
而不是git add *
。
[1]除了以“。”开头的。假设您处于类似shell的状态,而不是从Windows cmd.exe命令提示符处尝试此操作。如果您使用的是Windows命令提示符,则应切换到使用msysgit中的Git-Bash shell或来自cygwin的shell,具体取决于您安装git的方式。
[2] .gitignore仅用于防止未跟踪的文件被跟踪,如果该文件已被git跟踪,则它将继续被正常处理,直到从repo中删除。这可以在不影响git rm --cached filename
的实际文件的情况下完成。
答案 1 :(得分:7)
.gitignore
可以采用shell样式的glob模式。因此,例如,如果要忽略所有.jpg
个文件,可以添加
# Ignore all JPEGs
*.jpg
到.gitignore
。如果您只想忽略新目录中的JPEG,可以执行
new_directory/*.jpg
然后只需正常添加目录。