2014-02-13 41 views
0

我有一個回購名爲回購A,其中包含兩個項目。目標是移動項目B回購A。有人這樣做,但在我們可以刪除舊位置的依賴之前,其他人向項目B的舊位置提交了承諾。更糟糕的是,其他人似乎也增加了對回購B /項目B的承諾。Git - 將文件移動到另一個回購和保留源

什麼是最簡單的方法來將這些更改全部合併到回收B,同時保留歷史記錄?

回答

1

這將是單調乏味的,但如果出現衝突,應該很容易解決。

如果變化並不多:

在回購A - B項目

  1. 鎖定了,沒有更多的編輯。 (也許你已經有了)
  2. 通過查看輸出標識移動到回購B之後都進行了提交:

    git log 
    

在回購乙 - 項目B

  1. git cherry-pick commit-hash-from-step-2-above,示例命令:

    git cherry-pick 22c5679c160c5f64f5f58109fe62be683fc896f4 
    
0

這會很快讓您在一個步驟中完成所有更改,但解決衝突可能會更困難。

如果變化是多方面的,但你必須在那裏爲項目A從B項目中分離出來的良好定義的文件夾結構,你必須:

repoA/ 
    projectA/ 
    projectB/ 

repoB/ 
    projectB/ 

所以,你可以:

獲取所有從repoA

cd repoB 
git remote add origin2 url-for-repoA 
# I assumed the master branch, could be other. 
git pull origin2 master  

代碼中的結果將是:

repoA/ 
    projectA/ 
    projectB/ 

repoB/ 
    projectA/ 
    projectB/ <-- probably with conflicts waiting to be resolved 

清理:

cd repoB 
git reset --hard HEAD projectA/  
git remote remove origin2 

結果:

repoB/ 
    projectB/ <-- still with conflicts waiting to be resolved 
相關問題