在項目開始時,我們啓動了REPO-A。該回購持續了幾個月,直到其中一名工程師決定分拆該項目。現在他通過複製目錄並開始新的回購來完成此操作。 REPO-B。現在B沒有A的歷史,A也沒有任何進一步的發展。現在我們要回到A並且將B從B中的所有內容合併到A中,並保留B的所有歷史記錄,同時它還是一個單獨的回購。這裏唯一的救贖恩典是,自從B開始作爲A的副本之後,我應該能夠將B的歷史移植到A的末尾,並且一切都應該沒問題。如何合併存儲庫副本
不幸的是我已經有一段時間試圖做到這一點。
我試圖在(REPO-A):
git add remote new REPO-B
git checkout -b mergeAttempt
git merge -X theirs --allow-unrelated-histories new/master
現在,這似乎略顯工作,只回購B的歷史,現在將覆蓋所有從REPO-A存在於修改過的文件的歷史,所以沒有真實的歷史。所以我試過了:
git cherry-pick -X theirs <REPO-B first commit>..<REPO-B last commit>
這也失敗了,因爲REPO-B在它和master中創建的分支之間有幾個合併。我還嘗試在REPO-B中創建一個分支,將repo的根重新設置爲REPO-A中的最後一個提交,帶來了令人愉快的後果。
所以我不知道該從哪裏出發。
不知道git工具是否會輕易讓你這樣做,但你應該做一個A的克隆,然後將B作爲遠程克隆添加到克隆中,然後將B提取到克隆中,然後將B上的所有提交重新綁定到從A提交。如果這樣工作,你將有從A到B的1個歷史記錄。 –
'他通過複製目錄來做到這一點:他複製了整個repo文件夾嗎?就像'cp -r project -A/project-B /'? – LeGEC
看起來這樣,但他重新提交它,所以REPO-A的原始.git文件夾丟失了。 REPO-B認爲這是一個新鮮的回購。 –