我有一个Git仓库托管在Github上。提交多个文件后,我意识到我需要创建.gitignore
并排除.exe
,.obj
文件。gitignore提交后
但是,它会自动从存储库中删除这些提交的文件吗?有什么办法可以强制吗?
我有一个Git仓库托管在Github上。提交多个文件后,我意识到我需要创建.gitignore
并排除.exe
,.obj
文件。gitignore提交后
但是,它会自动从存储库中删除这些提交的文件吗?有什么办法可以强制吗?
不,你不能强迫一个已经承诺在回购一个文件,因为它被添加到.gitignore
你必须git rm --cached
删除您不想在文件只是删除回购。 (--cached因为你可能希望保留本地副本,但在回购协议中删除。)所以,如果你想从你的回购协议中删除所有的exe的做
git rm --cached /\*.exe
(请注意,星号*从报价外壳 - 这让git,而不是外壳,扩大文件和子目录的路径名)
但是,它会自动从存储库中删除这些提交的文件吗?
即使与现有的.gitignore
号您可以到舞台“忽略”文件与-f
(力)标志。如果他们的文件已经被提交,他们不会被自动删除。
git rm --cached path/to/ignored.exe
这是否意味着我已经单独删除每个.exe –
您可能能够批处理这个,但我不知道这是如何工作在windows下 – KingCrunch
但是,它会自动从存储库中删除这些提交的文件吗?
号
'最好' 的食谱做,这是使用git filter-branch
作为写在这里:
的git的过滤分行手册页包含全面的例子。
注意你会重写历史。如果您发布了包含意外添加的文件的任何修订版本,这可能会给这些公共分支机构的用户带来麻烦。通知他们,或者想想你需要删除文件的程度。
注意在存在标签的情况下,请始终使用--tag-name-filter cat
选项至git filter-branch
。它永远不会伤害,并且当你意识到以后需要它时,将会为你节省头痛
即使删除文件然后提交,您仍然会在历史中保留这些文件。要删除这些,请考虑使用BFG Repo-Cleaner。它是git-filter-branch的替代品。
我不得不删除。想法和目标文件夹以及读这个工作对我来说所有的意见后:
git rm -r .idea
git rm -r target
git commit -m 'removed .idea folder'
,然后按掌握
如果你还没有推变化已经:
git rm -r --cached .
git add .
git commit -m 'clear git cache'
git push
未来的Google可能会发现这非常有用。简洁和重点:https://www.git-tower.com/learn/git/faq/ignore-tracked-files-in-git –