git add的filepattern有否定语法?

TSL*_*TSL 7 git

假设我想使用git add(或其他一些命令行指令 - 我不能使用.gitignore)为*.hi文件添加所有文件EXCEPT.有没有办法做到这一点?到目前为止,我尝试过:

git add '!*.hi'

git add '!(*.hi)'

据我所知,这是你在glob语法中指定否定的方式,也是你在.gitignore中如何做的.然而,对于这两个命令,我收到错误fatal: [pattern] did not match any files.为了它的价值,我正在从Windows Powershell运行这些命令.

pok*_*oke 5

一个纯粹的Git方法是将它们全部添加,然后再次从索引中删除那些你不想要的文件:

git add .
git rm --cached *.hi
Run Code Online (Sandbox Code Playgroud)

的--cached需要只从索引中删除它们; 否则你会删除这些文件.请注意,git rm将始终"添加删除"到索引,因此,如果跟踪文件,这可能不是您想要的.然后你应该使用git resetKlas Mellbourn在评论中建议:

git add .
git reset -- *.hi
Run Code Online (Sandbox Code Playgroud)

  • 而不是最后一行,你也可以做`git reset HEAD - *.hi` (5认同)

Cer*_*vEd 5

排除模式是

git add ':!*.hi'
Run Code Online (Sandbox Code Playgroud)

注意冒号。

在 PowerShell 中测试git version 2.28.0.windows.1

我发现这个关于如何在 git 中使用排除模式的答案很有用

  • @matt 抱歉我的意思是冒号 (2认同)