Mad*_*uja 190 git github gitignore
我有一个在Github上托管的git存储库.提交许多文件后,我意识到我需要创建.gitignore和排除.exe,.obj文件.
但是,它会自动从存储库中删除这些提交的文件吗?有没有办法强制这样做?
man*_*lds 306
不,你不能强制删除已在repo中提交的文件,因为它已被添加到 .gitignore
您必须git rm --cached删除repo中不需要的文件.(--cached因为你可能想要保留本地副本但是从repo中移除.)所以如果你想从你的repo中删除所有的exe
git rm --cached /\*.exe
Run Code Online (Sandbox Code Playgroud)
(请注意,星号*是从shell中引用的 - 这可以让git而不是shell扩展文件和子目录的路径名)
Kin*_*nch 32
但是,它会自动从存储库中删除这些提交的文件吗?
.gitignore不会.即使现有,您也可以使用-f(强制)标记暂存"已忽略"的文件.如果他们的文件已经提交,则不会自动删除它们.
git rm --cached path/to/ignored.exe
Run Code Online (Sandbox Code Playgroud)
sla*_*lal 20
如果您尚未推送更改:
git rm -r --cached .
git add .
git commit -m 'clear git cache'
git push
Run Code Online (Sandbox Code Playgroud)
Ema*_*ele 12
我不得不删除.idea和目标文件夹,阅读完所有评论后,这对我有用:
git rm -r .idea
git rm -r target
git commit -m 'removed .idea folder'
Run Code Online (Sandbox Code Playgroud)
然后推向掌握
但是,它会自动从存储库中删除这些提交的文件吗?
没有.
执行此操作的"最佳"方法是使用git filter-branch此处所写的:
git-filter-branch的手册页包含全面的示例.
注意您将重写历史记录.如果您发布了包含意外添加文件的任何修订,则可能会给这些公共分支的用户带来麻烦.通知他们,或者想想你需要删除文件有多糟糕.
注意在存在标记时,请始终使用--tag-name-filter cat选项git filter-branch.当你意识到你需要它时,它永远不会伤害并且会让你头疼