有没有办法只从文件夹提交一种文件类型扩展名?

问题描述 投票:0回答:9

我有一个包含很多内容的文件夹,我只想提交“.c”扩展文件。是否有命令可以执行此操作,或者我是否需要手动添加每个文件名?

git version-control commit file-extension
9个回答
60
投票

对我来说,仅仅

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

22
投票

如果您想添加具有特定文件扩展名的所有文件,您所要做的就是在使用通配符暂存文件时指定它。

git add *.c

这里

.c
可以是您想要的任何扩展名。


20
投票

@Ryan 的答案将起作用,如果您只关心直接在文件夹中的文件,但不关心从子文件夹添加给定扩展名的文件。

如果您想递归添加基本文件夹和所有子文件夹中具有相同扩展名的所有文件,您可以使用:

git add [path]/\*.java

从子目录添加

*.java
文件,或者

git add ./\*.java

当前目录。

(来自

git add
文档


9
投票

稍微改动一下复制其他答案:通过掩码将文件包含在当前文件夹和子文件夹中,例如

*.xml
你可以使用:

git add ':/*.xml'

注意:使用单引号将阻止 shell(sh、bash、zsh 等)扩展

*
字符,并将参数按原样传递给 git,以便 git 处理 glob 扩展而不是您的 shell。
如果没有,引号
git add *.xml
将被扩展,传递给 git 的实际参数将是由 生成的匹配文件列表 你的外壳,例如
git add 1.xml 2.xml 3.xml...


7
投票

使用简单的

*
通配符效果很好,如果 您与要添加的文件位于同一目录

git add *.c

如果您位于存储库的不同子目录中,那么您可以使用带有魔术签名的路径规范,如 git 术语表中所述,在工作目录中的任何目录中添加带有 .c 扩展名的 所有文件

git add :/*.c

任何以 
:

开头的 git 路径规范都有特殊含义。在缩写形式中,前导冒号

:
后跟零个或多个“神奇签名”字母。神奇的签名
/
使模式从工作树的根开始匹配,即使您从子目录内部运行命令也是如此。
    


1
投票

git add *.rb zsh: no matches found: *.rb

使用引号应该有效:

git add '*.rb'



1
投票
\

,如下所示。

git add \*.c
git add \*.py



0
投票

git commit -m "My commit message" -- "*.myFileExtention"

示例 - 提交所有 kotlin 文件:

git commit -m "My commit message" -- "*.kt"

对你来说,将会是:

git commit -m "My commit message" -- "*.c"



0
投票

git add *.scss

添加了所有此类关闭文件。

© www.soinside.com 2019 - 2024. All rights reserved.