假设我想使用git add
(或其他一些命令行指令 - 我不能使用.gitignore)为* .hi文件添加所有文件EXCEPT。有没有办法做到这一点?到目前为止,我已经尝试过:
git add '!*.hi'
git add '!(*.hi)'
据我所知,这就是你在glob语法中指定否定的方式,以及你在.gitignore中的表达方式。然而,对于这两个命令,我收到错误fatal: [pattern] did not match any files
。对于它的价值,我正在从Windows Powershell运行这些命令。
答案 0 :(得分:5)
一个纯粹的Git方法是将它们全部添加,然后再次从索引中删除那些你不想要的文件:
git add .
git rm --cached *.hi
--cached
只需要从索引中删除它们;否则你会删除这些文件。请注意,git rm
将始终“添加删除”到索引,因此,如果跟踪文件,这可能不是您想要的。然后你应该使用git reset
作为Klas Mellbourn在评论中提出的建议:
git add .
git reset -- *.hi
答案 1 :(得分:2)
在PowerShell中,这可行:
git add $(Get-ChildItem -Recurse -Exclude '*.hi')
答案 2 :(得分:0)
排除模式是
git add '!:*.hi'
注意分号。
在 PowerShell 中使用 git version 2.28.0.windows.1
进行测试
我发现 this answer to how to use the exclusion pattern in git 很有用