簡體   English   中英

將兩個git存儲庫合並為一個,保留(重命名)主分支

[英]Merge two git repositories into one, keeping (renamed) master branches

前言

我有兩個獨立的項目,一起成長為一個。 他們都有自己的git存儲庫。

/project/
/project/app/
/project/app/.git/
/project/helper/
/project/helper/.git/

兩個git存儲庫都有一些獨特的分支,當然它們都有自己的master分支。

我想將兩個項目合並為一個如此:

/project/.git/

獨特的分支不相關,可以刪除它們。 但我希望重命名和保存主分支,例如masterAppmasterHelper ,這樣我masterHelper以為整個項目創建一個新的單一存儲庫,其中包含兩個分支和一個新的master分支。

這可能嗎? 如果是這樣,它將涉及一些重命名技巧,因為每個存儲庫突然包含它們自己的父目錄。

細節

這些存儲庫目前是本地的,因此我們不必擔心遠程起源或打破其他用戶的提交歷史記錄。 我確實希望保留各個(重命名的) master分支的提交歷史記錄,以及(如果可能)在這些分支中暫存/跟蹤的文件。


我發現了以下類似的問題: 如何合並兩個git存儲庫?

這個問題是關於將一​​個存儲庫合並另一個存儲庫中。 這使得這個問題略有不同,但我認為解決方案可能會很接近。 但是,我對git沒有足夠的經驗來弄清楚該解決方案將如何應用於我的場景。

一種方法是創建一個單獨的git存儲庫

mkdir combinedProject
cd combinedProject
git init

然后將兩個項目作為遙控器添加到combinedProject項目中

git remote add -f App /path/to/App
git remote add -f Helper /path/to/Helper

然后創建單獨的masterAppmasterHelper分支

git branch masterApp --track App/master
git branch masterHelper --track Helper/master

然后從masterApp創建一個主分支並將masterHelper合並到其中。

git checkout masterApp
git checkout -b master
git merge masterHelper

如果沒有創建新的倉庫,您可以在App倉庫中執行相同的操作

git checkout -b masterApp

然后為Helper添加遠程並創建masterHelper分支

git remote add -f Helper /path/to/Helper
git branch masterHelper --track Helper/master

然后將masterHelper masterHelpermaster

git checkout master
git merge masterHelper

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM