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
网友评论