2011-06-29 52 views
1

我是git的新手。我有我的服務器上的遠程git回購,其中包含我的代碼的當前版本的主。在我的本地計算機上,我使用的版本(大約10)只是在我使用版本控制(只是普通文件)之前存儲在其他地方的代碼。將舊代碼推送到git存儲庫

即使我可能再也不需要舊版本了,我仍然想將它們添加到回購中,所以如果我想要檢查舊版本,我可以這樣做。

那麼,我該怎麼做,我將它們添加爲分支或標籤,我應該如何將它們添加到遠程回購?

現在我這樣做:只刪除所有當前版本代碼(已經提交併推送到服務器),複製並粘貼舊代碼文件(比如版本0.2)並創建新分支(版本0.2),提交然後推送到服務器。現在我有2個分支,master和version0.2。這應該是正確的方式嗎?

回答

1

你的系統很好,但是如果舊的代碼實際上導致了主的位置,我建議一旦所有的代碼都在存儲庫中,我會建議將所有東西拼接成一個分支。我假設這是一個私人存儲庫,並且與主人混淆不會影響其他任何人(重寫公共存儲庫中的歷史記錄並不好)。

話雖這麼說,我還以爲你有一堆類似下面的分支的分支:

  1. V0.1
  2. V0.2
  3. V0.3

在這種情況下,v0.1是最早的v0.2,建立在v0.1上,依此類推。要真正讓主人代表這一點,我建議重新裝訂分支機構,以便在主人結束時包含所有分支機構的代碼。要做到這一點的步驟是:

  1. git checkout v0.2
  2. git checkout -b REBASE_v0.2
    • 通過創建一個新的分支,命名爲REBASE,在這裏我們不影響原來的V0.2分支。如果出現問題,我們可以隨時回覆舊分支。
  3. git rebase v0.1
  4. 解決任何衝突。
  5. 如果您刪除了v0.1和v0.2之間的任何文件git rm FILE每個文件。
  6. git checkout v0.3
  7. git checkout -b REBASE_v0.3
  8. git rebase REBASE_v0.2
  9. 解決任何衝突
  10. 如果您刪除V0.2和V0.3 git rm FILE每個文件之間的任何文件。
  11. 沖洗並重復步驟6-10以獲取您導入的更多版本分支。
  12. git checkout master
  13. git checkout -b REBASE_master
  14. git rebase REBASE_v0.3
  15. 解決任何衝突
  16. git diff master
    • 假設所有的衝突都解決了這個正確的應該顯示無顯着差異。
  17. git checkout master
  18. git branch master_old
  19. git reset --hard REBASE_master
  20. ​​
    • 擺脫重訂的分支

一旦你肯定的是,一切都很好,你可以去AHEA d並擺脫原始分支:git branch -D v0.1 v0.2 v0.3 master_old

在這一點上,你應該有一個主分支與你的實際代碼進展。

+0

非常感謝這項工作 – Justin

1

你可以做什麼:

  1. 找到你所有的舊版本,並按照年齡
  2. 對它們進行排序創建最古老的一個信息庫,並承諾
  3. 與第二古老的版本替換所有的文件和提交
  4. 重複,直到你犯的所有版本
  5. 從您的遠程回購的克隆,拉這個新的存儲庫
  6. 通過保留最新版本並提交來解決合併衝突

或者如果您是遠程存儲庫的唯一用戶,那麼在遠程存儲庫上應用最新的遠程存儲庫提交更爲清晰,更換遠程回購。

相關問題