使用通配符的.gitignore文件名匹配问题

17

我的.gitignore文件包含以下条目。由于似乎无法忽略文件,因此我正在尝试多种方法;

WinAppSetup/*.exe
/WinAppSetup/*.exe
WinAppSetup/setup.exe
**/WinAppSetup/setup.exe
当我从 Git Bash 运行 `git status` 命令时,我仍然能看到以下信息;
    modified:   WinAppSetup/setup.exe
我的.gitignore文件中应该添加哪个条目来忽略这个文件?
编辑完.gitignore文件后,我需要关闭并重新打开git bash才能让.gitignore文件重新读取吗?
更新
根据用户user2407038的评论,问题在于该文件已存在于存储库中。我能够在本地删除该文件,将更改提交到暂存区,然后提交更改到远程仓库。然后应用程序的新构建成功地忽略了该文件。
看起来我也可以在不关闭和重新打开git bash的情况下更新我的.gitignore文件。

6
如果您的文件显示为已修改,则它在代码库中。.gitignore 只作用于尚未添加到代码库(或索引)中的文件。也许您想从代码库中删除此文件? - user2407038
哦,哇!我甚至没有想到那个。我敢打赌那就是问题所在。我会尝试删除它并查看是否解决了问题。 - Mr Moose
@user2407038,请添加您的评论,我会将其标记为正确答案。 - Mr Moose
我想知道标题的答案是什么。 - Timo
1个回答

33

.gitignore 不会忽略已经存在于代码库中的文件。您必须先从代码库中删除该文件。

您可以使用 git rm --cached 从代码库中删除文件,而不会实际删除该文件。

git rm --cached WinAppSetup/setup.exe
在这种情况下,我通常会在同一次提交中添加新的.gitignore条目并从仓库中删除被忽略的文件。

1
我接受这个答案,因为它似乎做到了我需要的,但是@user2407038提供的建议才是真正帮助我解决这个特定问题的。 - Mr Moose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接