簡體   English   中英

刪除大文件后git push

[英]git push after removing large file

我不小心提交了log / test.log但從未推過它。 我已經完成了一個git rm來擺脫它。 但是當我嘗試推送時,我仍然會收到大量試圖傳輸的數據。 不應該git rm解決這個問題。 如果沒有,我該如何解決?

不要還原提交然后推送,因為巨大的文件仍將在歷史記錄中攜帶。

鑒於您尚未推送它並且您想要重做的提交是最新的,請從歷史記錄中刪除該提交:

$ git reset HEAD^

這將使您的索引返回到它在父提交( HEAD^ )上的狀態。 現在你有一個重新調整:第一次添加和提交你的意思。

如果您已經進行了其他后續提交,則需要git rebase -i <commit> ,其中<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

保存並退出編輯器以返回到shell,在那里您將看到表單的消息

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

從那里刪除有問題的文件( --cached僅從索引中刪除文件)

$ git rm --cached big-nasty-file
rm 'big-nasty-file'

修改提交

$ git commit --amend

並完成rebase

$ git rebase --continue

如果你沒有推,你可以使用git rebase -i來編輯你的提交歷史記錄,刪除addrm 需要注意的是,您必須小心不要編輯任何已經推送過的提交。

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失敗的問題(或者您認為它會失敗),您可以在問題提交后保存所有提交的補丁,將它們全部刪除,然后按順序重新應用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM