我錯誤地將一些本地項目文件添加到git存儲庫並提交/推送它們。如何刪除存儲庫中的文件,同時保留(並忽略)它們在本地?
我想從遠程存儲庫中刪除這些文件,將它們保存在本地,並在將來的提交/推送時忽略它們。
這是什麼最好的方法呢?
我錯誤地將一些本地項目文件添加到git存儲庫並提交/推送它們。如何刪除存儲庫中的文件,同時保留(並忽略)它們在本地?
我想從遠程存儲庫中刪除這些文件,將它們保存在本地,並在將來的提交/推送時忽略它們。
這是什麼最好的方法呢?
的乾淨的解決方案是以下內容:
git rm --cached
多餘的文件(注意--cached
選項,留在你的工作目錄中的那些文件),.gitignore
文件和git commit -A -m "..."
之後,如果你認爲不會有太多人已經從您的遠程回購(理想情況下,無)拉,你可以:
git rebase --interactive first-commit-with-files^
你的提交歷史:「^」引用父母犯了第一個,你也介紹壞文件git rm --cached
文件,然後重播其他commmits,除非他們中的一些也作出了修改,以相同的文件git filter-branch
或(然後,請準備好指出git rebase
手冊頁的RECOVERING FROM UPSTREAM REBASE部分的人員)。請參閱git rebase
手冊頁上的RECOVERING FROM UPSTREAM REBASE部分。 push -f
來強制性地將遠程回退(警告:這將「打破」那些已經提交了這些提交的存儲庫 - 它是可撤銷的,但是是手動的苦差事)。那麼它們添加到.gitignore
(線分開的文件名在回購的主目錄,然後按照該指南:http://help.github.com/removing-sensitive-data/最後git push -f
強行覆蓋遠程回購
我們已經有一個關於忽略SO的問題,不是嗎? O_O – 2010-07-01 18:53:39