我有一个git仓库托管在Github上。在提交了许多文件后,我意识到我需要创建.gitignore并排除.exe, .obj文件。

但是,它会自动从存储库中删除这些已提交的文件吗?有办法强制吗?


当前回答

但是,它会自动从存储库中删除这些已提交的文件吗?

不。即使使用现有的.gitignore,您也可以使用-f (force)标志来执行“被忽略”的文件。如果这些文件已经提交,它们不会被自动删除。

git rm --cached path/to/ignored.exe

其他回答

但是,它会自动从存储库中删除这些已提交的文件吗?

不。即使使用现有的.gitignore,您也可以使用-f (force)标志来执行“被忽略”的文件。如果这些文件已经提交,它们不会被自动删除。

git rm --cached path/to/ignored.exe

不,你不能仅仅因为一个文件被添加到.gitignore就强制删除已经在repo中提交的文件

你必须git rm -cached来删除你不想在repo中使用的文件。(—缓存,因为您可能希望保留本地副本,但从回购删除。)所以如果你想删除所有的exe从你的回购做

git rm --cached /\*.exe

(注意,星号*是从shell中引用的-这让git而不是shell扩展文件和子目录的路径名)

如果您还没有执行更改:

git rm -r --cached .
git add .
git commit -m 'clear git cache'
git push

我不得不删除。idea和目标文件夹,在阅读了所有的评论后,这对我来说是有效的:

git rm -r .idea
git rm -r target
git commit -m 'removed .idea folder'

然后推到主人

即使在您删除文件并提交之后,这些文件仍将保存在历史记录中。要删除这些,可以考虑使用BFG Repo-Cleaner。它是git-filter-branch的替代方案。