我如何递归地通过位于不同目录的模式(或glob)添加文件?

例如,我想用一个命令添加A/B/C/foo.java和D/E/F/bar.java(以及其他几个java文件):

git add '*.java'

不幸的是,这并没有像预期的那样起作用。


当前回答

把行放在~/.gitconfig中

(化名) addt = ! sh - c“git ls-files | grep \ \”。$ 1 * \ " | xargs git add”——

如果你想添加所有修改过的java文件,只需做: Git addt Java

同样地,如果你想添加所有修改过的python文件,可以这样做: Git addt py

其他回答

把行放在~/.gitconfig中

(化名) addt = ! sh - c“git ls-files | grep \ \”。$ 1 * \ " | xargs git add”——

如果你想添加所有修改过的java文件,只需做: Git addt Java

同样地,如果你想添加所有修改过的python文件,可以这样做: Git addt py

我只想添加基于git状态的特定字符串的文件:

Git 状态 |格雷普字符串 |xargs git add

然后能够git commit -m 'commit MSG来提交所有更改过的文件,文件标题中带有“string”

我在GNUmakefile中使用的一个变体


.PHONY: docs
docs:
    @echo docs
    bash -c "if pgrep MacDown; then pkill MacDown; fi"
    bash -c 'cat $(PWD)/HEADER.md                >  $(PWD)/README.md'
    bash -c 'cat $(PWD)/COMMANDS.md              >> $(PWD)/README.md'
    bash -c 'cat $(PWD)/FOOTER.md                >> $(PWD)/README.md'
    bash -c 'pandoc -s README.md -o index.html'
    bash -c "if hash open 2>/dev/null; then open README.md; fi || echo failed to open README.md"
    #git add --ignore-errors *.md
    git ls-files -co --exclude-standard | grep '\.md/$\' | xargs git 



添加一个之前没有提到的Windows命令行解决方案:

for /f "delims=" %G in ('dir /b/s *.java') do @git add %G

只需使用git添加*\*.java即可。这将添加根目录和所有子目录下的所有。java文件。