[英]Delete or Revert git commit in git repo server
我的一個團隊成員在git服務器上意外地提交並推送了如此大量的文件( 5 GB )。 這是一次提交。
並且其他所有團隊成員都無法獲得git更新,因為它太慢了。(可能需要5到6個小時或更長時間)。 所以我認為我們無法刪除本地計算機上的提交,因為我們還無法更新提交。 (git revert,git reset等)不幸的是,她下班了,所以我們無法訪問她的本地機器。
但是,我們可以使用shell訪問git repo服務器。
project3.git
和文件夾。
HEAD config description hooks info objects packed-refs refs
因此,如果可能,我們希望直接在服務器上使用shell命令恢復或刪除提交或文件。 然后我們的團隊成員不需要獲得更新。
有沒有辦法做到這一點?
更新 :我們知道提交名稱。 ex) 33aedaf55e
注意:在執行任何操作之前,應備份遠程存儲庫的副本 !
如果要重置遠程倉庫中的分支:在遠程倉庫中,顯示最近的歷史記錄: git log -3
* 33aedaf - (HEAD, master) commit with big file
* f18fd52 - some other commit
* 160c78f - another commit
將分支引用(假設master在這里)設置為上一次提交: git update-ref refs/heads/master f18fd52
在此之后,在master分支上執行git fetch
將不會獲取大文件。 我們做的是類似於git reset --hard f18fd52
。
大文件仍然存儲在遠程倉庫中。 你可以列出無法訪問的對象: git fsck --unreachable
並刪除所有無法訪問的對象: git gc --prune=all
。 請注意,這將刪除alll無法訪問的對象,因此請確保分支指針首先看起來沒問題。
請注意,我們所做的基本上是重寫歷史記錄。 如果有人已經使用龐大的文件撤銷了提交並開始處理它,那么當他試圖推送他的提交時可能會出現新的問題,所以你應該告知所有與repo一起工作的同事你已經做了什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.