2014-04-30 21 views
2

這裏Git的純倉庫是初始狀態:如何恢復當地一個

  • 遠程服務器
  • 在本地機器上的發展Git倉庫在裸Git倉庫

然後遠程服務器崩潰。

我一直提交更改到我的本地存儲庫,但我不能推它們,直到我們修復服務器。在一天左右,顯然服務器由於硬件問題而無法恢復,因此遠程存儲庫丟失。同時,我已經向我的本地存儲庫提交了多個提交。

現在我正試圖恢復服務器上的存儲庫。

  1. 我從我的本地git的文件夾中的文件複製到c:\repositories\myproject
  2. 我跑git --git-dir=myproject config core.bare true命令

它看起來不錯,但是,現在的問題是,我有裸倉庫兩個分支,一個是master(崩潰時刻的服務器分支),另一個是remote/origin(具有本地提交的較新分支)。

所以基本上我想推動未完成的提交來掌握並刪除遠程/原始分支,因爲它在裸倉庫中不需要。

我該怎麼做?

隨意分享一個更好的方式來完成這樣的任務。

回答

4

一種方法是徹底重新初始化遠程存儲庫,然後從本地執行push

在服務器上,在純倉庫應所在的目錄,做

git init --bare 

在客戶端(本地回購),設置新的原點,如果它發生了變化,並推至服務器,再次設置跟蹤。

git remote set-url origin <Remote_URL> 
git push origin master 
git branch --set-upstream-to=origin/master master 
+0

它會保留更改歷史記錄,不是嗎? – Alex

+0

是的。它應該等同於重新創建崩潰的服務器,然後推送最新的更改。 – merlin2011