2015-05-24 36 views
1

例如,我们要添加Git被告知忽略的所有Media目录的内容。目录分散在我们的项目中。运行git add -A -f不是一个解决方案,因为它增加了一切。另一种方法是单独添加每个元素,但这需要一些时间,如下所示:添加具有指定名称的所有目录的内容

git add /Path/To/Media/* 
git add /Other/Path/To/Media/* 

回答

1

这是我们在PowerShell中的工作原理。

git add **/Media/* -f 

hvd指出,这只适用于我的环境(虽然我没有证实这一点,),这是Windows 8.1上的PowerShell。

+1

这不是git的一部分。这是一些贝壳提供的东西,但不是全部。例如,在我使用的shell中,'**'仅仅意味着与'*'相同的东西,因此搜索所有的目录'Media',这些目录只有一层深度。 – hvd

+0

@hvd从这里的发行说明https://github.com/git/git/blob/master/Documentation/RelNotes/1.8.2.txt看起来'**'在.gitignore和pathname中有一些特殊的含义 - 喜欢的东西。 –

+1

是的,它的确如此,但在您使用它的上下文中却没有(对Git)。 Git甚至不会看到它,因为shell在它到达Git之前将其展开,并且您可以通过使用软件来精确监控Git的调用情况来确认这一点。例如,在Linux上,尝试'strace -e execve $ SHELL -c'exec git add **/Media/* -f''。你会发现实际的'execve'到'git'在命令行参数中不会包含任何'*'。其他平台可能有类似的工具。 – hvd

相关问题