git add';是否有否定语法;什么样的文件模式?

git add';是否有否定语法;什么样的文件模式?,git,Git,假设我想使用git add(或其他一些命令行指令-我不能使用.gitignore)来添加除*.hi文件之外的所有文件。有办法做到这一点吗?到目前为止,我已经尝试: git add'!*。您好‘ git-add'!(*.hi) 据我所知,这是在glob语法中指定否定的方式,也是在.gitignore中指定否定的方式。然而,对于这两个命令,我都收到了错误fatal:[pattern]与任何文件都不匹配。值得一提的是,我正在从Windows Powershell运行这些命令。在Powershell中,

假设我想使用
git add
(或其他一些命令行指令-我不能使用.gitignore)来添加除*.hi文件之外的所有文件。有办法做到这一点吗?到目前为止,我已经尝试:

git add'!*。您好‘

git-add'!(*.hi)


据我所知,这是在glob语法中指定否定的方式,也是在.gitignore中指定否定的方式。然而,对于这两个命令,我都收到了错误
fatal:[pattern]与任何文件都不匹配。值得一提的是,我正在从Windows Powershell运行这些命令。

在Powershell中,这可以工作:

git add $(Get-ChildItem -Recurse -Exclude '*.hi')

纯Git的方法是将它们全部添加,然后再次从索引中删除不需要的文件:

git add .
git rm --cached *.hi
只需要使用
--cached
将它们从索引中删除;否则,您将删除这些文件。请注意,
git rm
将始终“添加删除”到索引中,因此这可能不是您希望跟踪文件的情况。然后您应该使用Klas Mellbourn在评论中建议的
git reset

git add .
git reset -- *.hi

排除模式是

git add'!:*。嗨
注意分号

使用git 2.28.0.windows.1版在PowerShell中测试


我发现有用的

而不是最后一行,你也可以做
git reset HEAD--*。嗨
@klasournbourn好点!如果
.hi
文件已经被跟踪,那么这实际上是唯一的方法。