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

Vic*_*ira 9 git version-control file-extension commit

我正在学习用git控制我的源代码,而我在这部分仍然是真正的菜鸟.无论如何,问题不言而喻,我有一个包含很多东西的文件夹,我想提交".c"扩展文件.是否有命令来执行此操作或我是否需要手动添加每个文件名?我甚至在stackoverflow上做了一个研究,我没有发现这个,也许我正在寻找错误的概念,所以任何帮助将不胜感激..

提前致谢

Dan*_*Dan 14

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

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

git add [path]/\*.java
Run Code Online (Sandbox Code Playgroud)

*.java从子目录添加文件,或

git add ./\*.java
Run Code Online (Sandbox Code Playgroud)

对于当前目录。

(来自git add文档


Rya*_*yan 13

如果要添加具有特定文件扩展名的所有文件,您只需在使用通配符转储文件时指定它.

git add *.c

这里.c可以是您想要的任何扩展.

  • 是的,在我的例子中,我将 .c 更改为 .xml。我想上面的评论可能具有误导性,“git add \*.xml”对我有用,而不是谢尔盖回答中的“git add *.xml” (4认同)
  • 同样,`git add *.c` 不起作用,但 `git add \*.c` 起作用。也许这个答案需要更新。 (3认同)
  • 这对我不起作用。我试图在我的项目中的不同路径中添加 xml 文件。git add *.xml 不起作用,git add \*.xml 对我有用。 (2认同)

小智 13

对我来说,只是 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
Run Code Online (Sandbox Code Playgroud)

所以,在这个变种中,git试图添加被忽略的文件.

但是这样的变种:

git add \*.php
Run Code Online (Sandbox Code Playgroud)

工作完美无瑕.顺便说一下,你可以用同样的方式做git diff:

git diff -- \*.php
Run Code Online (Sandbox Code Playgroud)

  • 如果 bash 通配符或 git 通配符,这是有道理的。凉爽的。谢谢 (2认同)
  • 在 zsh shell (OS X) 上用“\”转义“*”就可以了。只需执行 `add *.extension` 在 bash shell 上就可以正常工作。 (2认同)

ccp*_*zza 10

通过一个小小的改动复制其他答案:通过掩码将文件包含在当前文件夹和子文件夹中,例如*.xml您可以使用:

git add ':/*.xml'
Run Code Online (Sandbox Code Playgroud)

注意:使用单引号将阻止 shell(sh、bash、zsh 等)扩展字符*,并将参数按原样传递给 git,以便 git 处理 glob 扩展而不是您的 shell。
如果没有引号git add *.xml,将会扩展,传递给 git 的实际参数将是由 shell 生成的匹配文件的列表,例如git add 1.xml 2.xml 3.xml...


Att*_*ila 5

*如果您与要添加的文件位于同一目录中,则使用简单的通配符可以正常工作:

git add *.c
Run Code Online (Sandbox Code Playgroud)

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

git add :/*.c
Run Code Online (Sandbox Code Playgroud)

任何以 开头的 git pathspec:都有特殊的含义。在简短形式中,前导冒号:后跟零个或多个“魔术签名”字母。魔术签名/使模式从工作树的根开始匹配,即使您从子目录中运行命令也是如此。