Git合并两个不同的仓库

2021-08-31  本文已影响0人  木木与呆呆

1.说明

Git合并两个不同的仓库,
两个都是已经存在的仓库,
比如grpc-demo和Telemetry,
演示将grpc-demo下的工程整体放入到
Telemetry下面的方法,
同时保留代码的提交记录。

2.grpc-demo改造

grpc-demo工程原始目录如下:

grpc-demo
|-- grpc-client
|-- grpc-compile
|-- grpc-server
`-- pom.xml

由于需要把grpc-demo下的工程整体放入,
需要先改造grpc-demo工程,
新增一层名为grpc-demo的目录,
然后把下面的项目放进去,
提交到本地git即可,
改造后工程目录如下:

grpc-demo
`-- grpc-demo
    |-- grpc-client
    |-- grpc-compile
    |-- grpc-server
    `-- pom.xml

如果是把grpc-demo下的工程直接放入
Telemetry下面的话,
则不需要改造。

3.Telemetry新增远程仓库

在Telemetry下面新增远程仓库remote_b,
仓库地址为grpc-demo的本地仓库,

git remote add remote_b file://D:/Code/Work/grpc-demo

grpc-demo的本地仓库地址,
使用file:开头,
后面跟文件所在路径即可,
文件路径的分隔符需要使用反斜杠/,
好处在于grpc-demo的改造不需要提交到远程仓库,
操作完后直接回滚本地修改即可,
不会影响grpc-demo工程的后续使用。

如果已经存在了remote_b仓库,
可以先删除掉:

git remote remove remote_b

查看添加的远程仓库:

git remote -v

可以看到添加的远程仓库:

remote_b        file://D:/Code/Work/grpc-demo (fetch)
remote_b        file://D:/Code/Work/grpc-demo (push)

4.Telemetry拉取远程仓库

在Telemetry工程下拉取远程仓库grpc-demo:

git fetch remote_b

5.Telemetry合并远程仓库

在Telemetry的当前master分支,
合并远程仓库remote_b的master分支:

git merge remote_b/master --allow-unrelated-histories

合并完成后可能会出现很多冲突,
请在本地代码中解决冲突,
成功后再推送到自己的远程仓库。

注意使用--allow-unrelated-histories参数,
否则会报错:拒绝合并无关的历史。

6.查看Telemetry

查看Telemetry的工程目录如下:

Telemetry
|-- grpc-demo
|   |-- grpc-client
|   |-- grpc-compile
|   |-- grpc-server
|   `-- pom.xml
`-- grpc-moon
    `-- pom.xml

可以看到grpc-demo工程整体放到了
Telemetry工程下面,
和Telemetry下面原有的grpc-moon同级了。

查看提交记录发现原来的日志也合并过来了:

git log

7.参考文章

Git 合并两个不同的仓库
合并两个不同远程仓库的Git命令

上一篇 下一篇

猜你喜欢

热点阅读