合并两个仓库
合并两个Git仓库
如果要合并两个Git仓库到,并且要保留两者的提交历史,一个仓库在主目录,另一个仓库在子目录。可以通过一下步骤进行:
步骤1: 添加远程仓库
假设你已经有一个名为repoA
的本地仓库,现在需要将repoB
合并进来。首先,我们需要将repoB
添加为一个新的远程仓库:
1 | git remote add repoB <repoB-url> |
通过这条命令,repoB
成为了一个可以访问的远程仓库。
步骤2: 获取远程仓库数据
使用fetch
命令从新添加的远程仓库获取所有分支和数据:
1 | git fetch repoB |
这一步会将repoB
的所有数据下载到本地,但不会自动合并到你的工作目录。
步骤3: 移动repoA
的内容到一个单独的目录
为了避免合并时的内容冲突,我们先将repoA
的内容移动到一个新目录下,例如repo1
:
1 | mkdir repo1 # 目录名不与repoB的目录冲突就可以 |
步骤4: 合并仓库
现在开始实际的合并操作。首先,确保你在repoA
的根目录下:
1 | git merge repoB/master |
这里假设你希望将repoB
的master
分支合并进来。命令执行后,Git会将repoB
的master
分支内容合并到当前分支。
说明
如果要把repoA放在主目录,并保持repoA的repo-url,那么可以这么做:
在repoB中进行如上操作
在repoA中添加repoB,使用repoB的分支覆盖repoA的分支
注意分步骤执行
原仓库内容移至子目录后进行commit,便于git识别rename操作。 如果使用git reset
命令把步骤3和步骤4放在一个提交,那么会导致git无法正确的识别文件的历史。