我有一个托管在 Github 上的 Git 代码库。在提交了许多文件后,我意识到需要创建
.gitignore
文件,并排除 .exe
和 .obj
文件。
然而,它会自动从代码库中删除这些已提交的文件吗?有没有强制删除它们的方法?.gitignore
文件,并排除 .exe
和 .obj
文件。
然而,它会自动从代码库中删除这些已提交的文件吗?有没有强制删除它们的方法?不,你不能强制删除已经提交到仓库的文件,只是因为它被添加到了 .gitignore
。
你需要使用 git rm --cached
命令来删除仓库中不想要的文件。(由于你可能想保留本地副本但从仓库中删除,所以使用 --cached 参数。)因此,如果你想从仓库中删除所有的 exe 文件,请执行以下操作:
git rm --cached /\*.exe
(注意星号“*”是引用自Shell的,这使得Git而不是Shell来扩展文件和子目录的路径名)
git rm /\*.exe
命令,它将删除你存储库中的所有 .exe 文件。 - manojldsgit
设计的。 - Lambart如果你还没有推送更改:
git rm -r --cached .
git add .
git commit -m 'clear git cache'
git push
那么,它会自动从仓库中删除这些已提交的文件吗?
不会。即使存在 .gitignore
文件,您仍可以使用-f
(强制)标志来暂存“被忽略”的文件。如果这些文件已经提交,它们不会自动被删除。
git rm --cached path/to/ignored.exe
我必须移除.idea和target文件夹,阅读所有评论后,这对我起作用了:
git rm -r .idea
git rm -r target
git commit -m 'removed .idea folder'
然后推送到主分支
.idea
was my problem I guess it was yours too :)
- Olivier Pons然而,它会自动从存储库中删除这些已提交的文件吗?
不会。
最好的方法是使用 git filter-branch
,可以在此处阅读有关该方法的详细信息:
git-filter-branch的手册包含了全面的示例。
注意:您将重写历史记录。如果您发布了包含意外添加文件的修订版本,这可能会给那些公共分支的用户带来麻烦。通知他们,或者考虑一下您有多么需要删除这些文件。
注意:在存在标签的情况下,始终使用--tag-name-filter cat
选项来运行git filter-branch
。这永远不会有坏处,并且当您后来意识到需要它时,它将为您节省麻烦。
--all
一次重写所有(本地)分支。 - sehe