Git 有没有一种方法可以只从文件夹提交一个文件类型扩展名?
我有一个包含很多东西的文件夹,我只想提交扩展名为“.c”的文件。是否有执行此操作的命令,或者是否需要手动添加每个文件名 如果要添加具有特定文件扩展名的所有文件,只需在使用通配符暂存文件时指定它即可Git 有没有一种方法可以只从文件夹提交一个文件类型扩展名?,git,version-control,commit,file-extension,Git,Version Control,Commit,File Extension,我有一个包含很多东西的文件夹,我只想提交扩展名为“.c”的文件。是否有执行此操作的命令,或者是否需要手动添加每个文件名 如果要添加具有特定文件扩展名的所有文件,只需在使用通配符暂存文件时指定它即可 git add*.c 这里.c可以是您想要的任何扩展。对我来说,只是git add*.c不起作用。我遇到如下致命错误: git add *.php The following paths are ignored by one of your .gitignore files: wp-config.ph
git add*.c
这里
.c
可以是您想要的任何扩展。对我来说,只是git add*.c
不起作用。我遇到如下致命错误:
git add *.php
The following paths are ignored by one of your .gitignore files:
wp-config.php
Use -f if you really want to add them.
fatal: no files added
因此,在这个变体中,git尝试添加被忽略的文件
但这种变体:
git add \*.php
工作完美无瑕。
顺便说一句,您可以用同样的方法执行git diff:
git diff -- \*.php
@如果您只关心文件夹中直接存在的文件,而不关心从子文件夹中添加具有给定扩展名的文件,Ryan的答案将起作用
如果要在基本文件夹和所有子文件夹中递归添加具有相同扩展名的所有文件,可以使用:
git add [path]/\*.java
要添加子目录中的*.java
文件,或
git add ./\*.java
对于当前目录
(From)如果您与要添加的文件位于同一目录中,则使用简单的
*
通配符可以正常工作:
git add *.c
如果您位于存储库的不同子目录中,则可以使用带有魔术签名的pathspec,如,将扩展名为.c
的所有文件添加到工作树中的任何目录中:
任何以
:
开头的git pathspec都具有特殊意义。在缩写形式中,前导冒号:
后面跟着零个或多个“魔术签名”字母。魔法签名使模式从工作树的根匹配,即使是在子目录中运行命令。通过一个掩码复制其他答案:通过掩码(例如*.xml)将文件包含在当前文件夹和子文件夹中,您可以使用:
git add':/*.xml'
注意:使用单引号将阻止shell(sh、bash、zsh等)扩展*
字符,并将参数按原样传递给git,以便git处理全局扩展,而不是您的shell
非常简单git add*.c&&git commit-m'My commit'
如果你永远不想提交某个特定扩展名的文件,那么使用uhh,看起来很好-我正在尝试git add.c
,让我在这里检查一下它是否有效。哈哈,我已经读过关于“git inore”的文章,但是它对于这个小工作来说太强大了-无论如何感谢它的类型@赛尔夫工作起来很有魅力,谢谢你!add作为一个答案,因此我可以接受=dactual,git add*.c
甚至不涉及文件选择过程中的git
:*.c
由bash解释,因此您可以使用echo*.c
列出您的.c文件。。。它被称为globbing,了解它的工作原理是值得的。如果bash globbing或git是globbing,这是有意义的。酷。谢谢这对我不起作用。我试图在项目中的不同路径中添加xml文件。git add*.xml不起作用,git add*.xml对我起作用。我的回答是,您必须将.c
部分更改为任何文件扩展名,它将起作用。请将.c
视为占位符值。是的,我将.c改为.xml。我猜上面的评论可能有误导性,git add\*.xml
对我有效,而不是像谢尔盖的回答一样,git add*.xml
不起作用,但是git add\*.c
起作用。也许这个答案需要更新。更新:对于反斜杠问题,您需要检查当前目录。我总是发现从最大的目录工作最容易,然后像git add*.c
之类的命令或任何您的扩展名都可以工作。
git add :/*.c