如何在Git中递归添加特定的文件?

4
在Windows上使用Git Bash提交内容,需要执行以下操作,例如:
1.git add *
2.git commit -m "Commit test"
3.git push origin master

以这种方式提交所有更改。我只想添加特定的文件(*.h和*.cpp)。解决方案是使用:
ad. 1.:
git add *.h
git add *.cpp

但是这种方式只会在当前文件夹中添加*.h和*.cpp文件。问题是如何通过一条命令添加当前文件夹及其子文件夹中的*.h和*.cpp文件? 类似于:

1.git add *.h and *.cpp and_in_subfolders
and then:
2.git commit -m "Commit test"
3.git push origin master

感谢您的选择。
2个回答

10

如果您使用

git add *.h

Shell会使用当前文件夹中的文件来展开通配符。

Git也可以自己展开通配符,而且它会按照你想要的方式(递归地)展开,所以你只需要防止shell展开通配符:

git add '*.h'

天啊,我完全不知道那个功能存在。谢谢你的教育。 - Edward Falk

1
最好使用bash命令,而不是依赖于shell解释的'*'(且不进行递归)。
find . -type f -name '*.h' -exec git add {} \; 

另一种方法是使用xargs。
find . -type f -name '*.h' -print | xargs git add 

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