2014-03-05 37 views
2

背後我的問題的背景是,我不小心上傳5GB的文件夾的完全的媒體文件(它實際上它應該是對的.gitignore文件的Drupal網站/默認文件夾),以我的到位桶遠程倉庫。當我發現錯誤時,我繼續刪除它並推送該提交。如果將git remote origin切換到新的repo和git pull會發生什麼?

之後,我意識到git的歷史仍然有這些文件。在我的本地機器,我做了以下內容:

git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch sites/default' --prune-empty --tag-name-filter cat -- --all 
git prune 
rm -rf .git/refs/original/ 
git reflog expire --expire=now --all 
git gc --prune=now 

在那之後,我用克隆到一個新的本地回購這樣的:

git clone --no-hardlinks file://path/to/old-repo new-repo 

這給了我一個「乾淨」的資料庫,以重寫歷史刪除目標文件夾。 之後,我換了新庫的起源到我的到位桶回購和力使用推動了變化:

git push origin master --force 

git push origin development --force 

即使提交從記錄中刪除,並檢查其源在bitbucket上根本沒有顯示這些文件,版本庫大小仍然是5GB。由於我找不到刪除這些文件的方法,我選擇在bitbucket上創建一個新的存儲庫,並將新的本地存儲庫推送到它。

如果另一個開發誰是工作在同一個項目改變了遠程Git指向這個新的存儲庫,並沒有一個git拉,將他的機器上的文件是一樣的新的存儲庫?

回答

0

我得到了一個同事誰是原來的庫,但因爲她沒有任何拉最近的變化,背後提交其中有不需要的文件夾。將原點切換到新的存儲庫之後,git pull成功完成,沒有任何提交中的不需要的文件夾的痕跡。

希望這可以幫助處於類似情況的人。

相關問題