7

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

git add '!*.hi'

git add '!(*.hi)'

据我了解,这是您在 glob 语法中指定否定的方式,也是在 .gitignore 中执行此操作的方式。然而,对于这两个命令,我都收到错误消息fatal: [pattern] did not match any files。对于它的价值,我正在从 Windows Powershell 运行这些命令。

4

3 回答 3

5

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

git add .
git rm --cached *.hi

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

git add .
git reset -- *.hi
于 2013-04-12T17:05:16.957 回答
2

在 PowerShell 中,这有效:

git add $(Get-ChildItem -Recurse -Exclude '*.hi')
于 2013-04-12T17:01:07.517 回答
0

排除模式是

git add '!:*.hi'

注意分号。

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

我发现this answer to how to use the exclude pattern in git有用

于 2021-02-25T08:54:38.577 回答