我不小心提交了log/test.log,但從未推送它。此後我做了一個混帳rm來擺脫它。但是當我嘗試推送時,我仍然收到大量試圖傳輸的數據。 git rm不應該解決這個問題。如果沒有,我該如何解決?刪除大文件後git push
回答
不要恢復提交,然後推送,因爲巨大的文件仍然會在歷史中傳播。
既然你還沒有推開它,要重做是最近的,請從你的歷史,提交承諾:
$ git reset HEAD^
這將你的索引返回它的狀態在父提交(HEAD^
)中。現在你已經有了一個夢想:第一次添加和實現你的意思。
如果您已經做了其他後續提交,您需要git rebase -i <commit>
其中<commit>
是bad commit的父代的SHA-1。
例如(並注意SHA-1將在您的回購不同)
$ git rebase -i 57d0b28
將下降在類似於
pick 366eca1 This has a huge file pick d975b30 delete foo pick 121802a delete bar # Rebase 57d0b28..121802a onto 57d0b28 # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # # If you remove a line here THAT COMMIT WILL BE LOST. # However, if you remove everything, the rebase will be aborted. #
編輯與edit
上與線替換pick
重承諾
edit 366eca1 This has a huge file pick d975b30 delete foo pick 121802a delete bar
保存並退出你的編輯器返回到您的外殼,在那裏你會看到形式
Stopped at 366eca1... This has a huge file You can amend the commit now, with git commit --amend Once you are satisfied with your changes, run git rebase --continue
從那裏的消息,刪除有問題的文件
$ git rm --cached big-nasty-file rm 'big-nasty-file'
修改(--cached
只從指數中刪除文件)提交
$ git commit --amend
,並完成底墊
$ git rebase --continue
如果您尚未推送,則可以使用git rebase -i
編輯提交歷史記錄,同時刪除add
和rm
。一個警告是,你必須小心不要編輯任何已經推送的提交。
http://blog.madism.org/index.php/2007/09/09/138-git-awsome-ness-git-rebase-interactive
你問你是否仍然可以做到這一點,如果有在提交和其他提交以下這一個其他的變化。這取決於。您應該能夠編輯/刪除任何未完成的提交,而不僅僅是最新的提交。但是如果以後的更改很大程度上依賴於已刪除的提交的更改(例如,您添加了一個文件,然後在稍後的提交中對其進行了編輯),那麼rebase可能會失敗。如果你刪除一個提交,你將失去該提交的所有更改。我不知道從提交中刪除單個更改的方法。如果您不想丟失test.rb提交中的其他更改,則可以在刪除提交之前生成補丁(使用git show <commitid> > /tmp/patch
或使用內置的git patch
功能)。然後編輯您的補丁文件以刪除大的test.rb,但保留所需的更改,然後重新將補丁應用到頭部。
如果你有我前面提到的,其中底墊中失敗的問題(或者你認爲它會失敗),可以爲您節省補丁所有您提交的問題提交後,將它們全部刪除,而爲了重新申請他們。
雖然我沒有推,因爲我已經做了多次提交。 rebase仍然是一個選擇嗎? (在與意外日誌/ test.rb提交了它一噸的文件) – Daniel 2010-02-24 15:28:36
- 1. git push刪除幾個文件後
- 2. git push - 強制刪除遠程文件?
- 3. Heroku在git push時刪除文件?
- 4. 在git push force後刪除提交
- 5. Openshift - 在git push後刪除laravel上傳的文件
- 6. git push後git拉到www文件夾
- 7. 如何在push之前從git repo中刪除文件?
- 8. git克隆並拉大文件刪除
- 9. Git - 刪除大文件的提交
- 10. 刪除git文件
- 11. Git拉 - 刪除文件
- 12. 將'git push origin <branch>'從本地刪除後遠程刪除<branch>?
- 13. jwt config secret文件push git
- 14. git - push java .classpath文件?
- 15. Git - 從.git文件夾中刪除文件,而無需遠程刪除文件
- 16. git防止推送,因爲太大,已被刪除的文件
- 17. git和刪除文件
- 18. git刪除新文件
- 19. git checkout刪除文件
- 20. 刪除GIT中的文件
- 21. 從git中刪除文件
- 22. Bitbucket git刪除文件
- 23. git的MV不會刪除舊文件
- 24. 如何刪除由git push origin創建的git分支?
- 25. 刪除git commit的所有文件?
- 26. 無法從git commit中刪除文件
- 27. 你可以使用git刪除文件後恢復文件嗎?
- 28. Git的部署:在刪除文件時,按文件中刪除
- 29. 從Git歷史中刪除文件而不刪除文件
- 30. git push tag錯誤的含義:「刪除一個不存在的文件。」
你如何獲得的SHA1地址,請提交? – Daniel 2010-02-25 03:48:57
@Daniel運行'git log'或'gitk',例如。 – 2010-02-25 11:26:38