使用git合并两个不同项目代码
前言, 这里解决的是两个不同的项目, 因为不同项目那必然是两个不同的git仓库
都是不同的git仓库了那就更不可能是相同的分支了(即使分支名相同)
至于为什么会有这种业务情况出现, 我也不知道, 反正先学干就完了
这里图形化界面演示用的是idea自带的git插件, 因为不是git命令行高级玩家, 所以有部分操作配合idea自带git插件尽享完成, 想学命令行操作可以据根据具体需求进行百度
文章目录
- 使用git合并两个不同项目代码
- 一. 两个不同项目 -> 以及明确目的
- 二. clone代码
- 三. 合并
一. 两个不同项目 -> 以及明确目的
-
首先我们要有两个不同的项目分别是项目A和项目B, 且项目B不是从项目A中fork出来的(本鸟git底层逻辑不是很吊所以fork的是否可行, 我还没有尝试, 从理论知识上来说我是未知的)
这里我们假设
- 项目A是码云上的ruoyi项目(https://gitee.com/y_project/RuoYi)
- 项目B是码云上的小诺项目(https://gitee.com/xiaonuobase/snowy-layui)\
-
目的
我们的目的是将小诺和ruoyi进行合并
二. clone代码
-
首先我们先克隆一下ruoyi的代码, 这里用命令行展示, 因为idea的话需要截图, 比较懒的截图
git clone {git仓库地址}
# 命令行 git clone https://gitee.com/y_project/RuoYi.git # 输出日志 Cloning into 'RuoYi'... remote: Enumerating objects: 28848, done. remote: Counting objects: 100% (285/285), done. remote: Compressing objects: 100% (202/202), done. remote: Total 28848 (delta 69), reused 32 (delta 4), pack-reused 28563 Receiving objects: 100% (28848/28848), 11.10 MiB | 1.58 MiB/s, done. Resolving deltas: 100% (13759/13759), done.
-
打开idea对应文件夹我们可以看到代码已经在了
-
接下来我吧我们的小诺的项目添加到我的这个远程仓库的remote中命令行
git remote add {你命名的新remote名字} {git仓库地址}
git remote add xiaonuo https://gitee.com/xiaonuobase/snowy-layui.git
-
这个是没有对应日志的所以我们怎么查看成功了呢? -> 使用fetch命令
git fetch {remote}/{branch}
这里我不需要刷新具体的branch我就都刷新了# 命令行 git fetch xiaonuo # 日志 remote: Enumerating objects: 10303, done. remote: Counting objects: 100% (108/108), done. remote: Compressing objects: 100% (77/77), done. remote: Total 10303 (delta 29), reused 0 (delta 0), pack-reused 10195 Receiving objects: 100% (10303/10303), 130.71 MiB | 6.84 MiB/s, done. Resolving deltas: 100% (5387/5387), done. From https://gitee.com/xiaonuobase/snowy-layui * [new branch] master -> xiaonuo/master
-
查看图形化界面, 可以看到已经出现了
三. 合并
-
这里使用
git merge {remote}/{branch} --allow-unrelated-histories
命令其中这里的
--allow-unrelated-histories
该命令可以合并不相关的分支。除非存在文件冲突,否则它可以无缝运行。如果发现冲突,别无选择,只能使用更长的解决方案。# 命令行 git merge xiaonuo/master --allow-unrelated-histories # 日志 Auto-merging .gitignore CONFLICT (add/add): Merge conflict in .gitignore Auto-merging LICENSE CONFLICT (add/add): Merge conflict in LICENSE Auto-merging README.md CONFLICT (add/add): Merge conflict in README.md Auto-merging pom.xml CONFLICT (add/add): Merge conflict in pom.xml Automatic merge failed; fix conflicts and then commit the result.
-
这里我们去git插件中查看可以发现, 是有一些冲突文件的需要在我们commit之前进行解决
-
解决完成之后我们就可以进行提交了, 这里我提交的比较多可能有点慢因为我勾选了analyzing code
-
这里是是分析检测到了一些代码上的error和warning, 我这里不是重点, 没刷新maven正常直接commit anyway
-
提示提交成功
-
查看git图形化界面可以看到我们对应的提交记录
-
然后就可以push了后续我就不演示了, 因为我是直接拉的ruoyi的仓库, 本菜鸟不是ruoyi的commiter, 所以没有push权限
-
当然也要记得合并完成之后要把没用的Remote删除掉, 以及垃圾分支, 本鸟精神洁癖