初始化一個新的回購。
從所有幾個項目中複製所需版本的文件並將它們組合在一起。如有必要,您可以重新排列目錄結構。並確保文件有預期的內容。
設置.gitignore
,.gitattribute
等。將它們全部添加併爲新的回購做出第一次提交。
從幾個項目中獲取分支並將它們全部與選項-s ours
合併。策略僅合併歷史,而不包含真實內容。
例子:
比方說,我們有RepoA,RepoB和RepoC,都包含分支master
。我們將合併三個分支的最新版本的文件。現在
git init RepoABC
cd RepoABC
#copy the files all RepoA, RepoB, RepoC and rearrange the directory structure if necessary.
#add .gitignore, .gitattribute, etc if necessary.
git add .
git commit -m 'new root for combining RepoA RepoB and RepoC'
git fetch origin_repoa master:repoa_master
git fetch origin_repob master:repob_master
git fetch origin_repoc master:repoc_master
git merge repoa_master repob_master repoc_master -s ours -m 'Merge and preserve the histories of RepoA, RepoB and RepoC, with merge strategy "ours"'
我們可以專注於新的回購的分行進行新的變化。歷史是保留的,我們可以回顧他們。如果目錄結構已重新排列,那麼當我們第一次簽出舊提交時,我們可能會遇到一個小問題。作爲未跟蹤文件簽出後,新的文件夾和文件將保留。 git clean -df
會跳過它們,所以我們必須rm -rf
他們一次。
您是否得到了可幫助您解決問題的答案?如果是,您可以將其標記爲答案。而且這也會使其他有類似問題的人受益。 –