2012-11-19 161 views
1

我需要知道在codebasehq.com上將git歷史記錄從一個存儲庫移到另一個存儲庫的正確方法。現狀:如何在codebasehq上正確推送一個git倉庫到另一個倉庫?

  • 有上codebasehq.com回購我稱之爲「老」像mycompany.codebasehq.com/projects/OLDNAME/repositories/PROJECTNAME
  • 路徑老回購一些開發團隊意識到這個回購實際上應該是在codebasehq不同的位置之後。並用「舊」回購文件做了「新」回購,並將其推到mycompany.codebasehq.com/projects/NEWNAME/repositories/PROJECTNAME。所以新的回購現在只有一個(初始)提交來自舊回購的所有文件,但根本沒有舊的歷史記錄。

我想將歷史從舊回購帶回新回購。我已閱讀關於rebase和嫁接:How to rebase one Git repository onto another one?和我能夠成功地將兩個存儲庫嫁接到一個。

我需要知道的是如何用包含所有舊歷史記錄的重新生成/嫁接回購的1次初始承諾替換此新回購。我應該刪除這個錯誤的新回購,並從頭開始重新創建它,或者只是用一些特殊的標誌推它?

UPD:我一直在努力,只是把分支完整歷史(舊+新),以作爲mycompany.codebasehq.com/projects/NEWNAME/repositories/PROJECTNAME名爲fullhistory新的分支,但得到的錯誤:

bash-3.2$ git push codebasehq fullhistory 
Counting objects: 104, done. 
Delta compression using up to 2 threads. 
Compressing objects: 100% (74/74), done. 
Writing objects: 100% (74/74), 1.74 MiB, done. 
Total 74 (delta 36), reused 5 (delta 0) 
fatal: unresolved deltas left after unpacking 
error: unpack failed: unpack-objects abnormal exit 
To [email protected]:mycompany/project/repo.git 
! [remote rejected] fullhistory -> fullhistory (n/a (unpacker error)) 
error: failed to push some refs to '[email protected]:mycompany/project/repo.git' 
+0

解包器錯誤?聽起來就像你沒有對存儲庫文件的寫入權限。 –

+0

我懷疑這是因爲'fullhistory'分支沒有與新回購中的現有主人共同修訂,因爲我可以成功地將同一分支推送到原始回購處。 – bialix

回答

1

你可以嘗試以下方法:

  • git clone OLDREPO
  • git remote add new NEWREPO
  • git fetch new

你的悠久歷史,現在應該是master,而新的歷史,是在new/master

  • git checkout new/master
  • git rebase -i master

這將啓動從new/master移植一切的互動變基到master。由於您可能想要從新代碼中刪除第一次提交(當時是該工作的簡單副本),您應該刪除編輯器中將顯示給您的相應行。其餘的應設置爲pick

+0

謝謝,雖然這不是我要找的。我的問題實際上是在推動。 – bialix

+1

由於所有較新的SHA1 ID都依賴於前一個,因此無法將舊合併歷史記錄壓入舊版本。 重寫舊的歷史記錄(刪除一個提交併插入整個歷史記錄)將不可撤銷地更改您的回購中的所有SHA1。你別無選擇,只能刪除回購中的所有內容,然後推出'fullhistory'。 我建議你先將安全首先克隆到新的回購庫。因此,如果出現問題,您可以簡單地將其刪除並再次推入舊狀態。 –

+0

我認爲你是對的。謝謝。 – bialix

相關問題