使用git,我如何执行git add操作但仍忽略.gitignore中的模式?

9
我希望能够像"git add *.java"那样执行操作,而不会因为其中一个文件匹配了.gitignore文件而出错。
例如:在我的文件夹中,我有以下文件:
ignored.java
something.java
somethingelse.java 
somethingevenmoreelse.java.

这里有三个文件,是我刚创建的。我想要执行命令 git add *.java,让它添加这三个文件。换句话说,我不想一个个添加。

The following paths are ignored by one of your .gitignore files:
ignored.java
Use -f if you really want to add them.
fatal: no files added

我更希望它只忽略.gitignored文件并添加剩余的文件。

使用zsh,发现Tab键自动补全的真正威力! - Simon
在zsh中,如果您键入“git add s*.java”并按Tab键,则会自动完成以s开头的三个.java文件。此外,如果您只键入“git add”并按Tab键,则仅会完成未暂存的文件。 - Simon
1个回答

12
如果你在引用glob模式,则git会对其进行解释,而不是由shell解释,并且将忽略添加之前被忽略的文件而不会出错。
git add '*.java'

或者说:

git add \*.java

1
这绝对是正确的方法。Git将解释文件名参数中的glob模式,并在适当时应用gitignore模式,而不会抛出错误。之前抛出的错误是因为您明确地将一个被忽略的文件传递给了git add,它认为您必须做了一些意想不到的事情。 - Lily Ballard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接