簡體   English   中英

在git repo服務器中刪除或恢復git commit

[英]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.

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