问题诞生

        两条业务线的代码仓库不同,一个业务线A同步另外一个业务线B最近的变更,其本质就是利用git实现跨库合并代码。虽然通过拷贝文件或拷贝代码也可以实现同样的目的,但是容易出错或者有遗漏,且无记录可追踪。建议大家平时在合并代码的过程中,尽量通过git操作。

步骤1

如果业务线使用的内网不同,需要将网络A进行切换,拉取业务A最新代码,新建一个分支,并切换至该分支。

建议合并代码时,尽量先建一个分支来过渡,避免直接将代码合并到最后需要提交的分支。

git命令

git branch test
git checkout test

vscode插件

点击这里新建分支

步骤2

如果业务线使用的内网不同,需要将网络B进行切换,并执行以下命令。此处的仓库别名xxx自行定义

git命令

git remote add git仓库地址
git fetch xxx(仓库别名)

vscode插件

如图所示,添加远程仓库

输入gitlab仓库地址,然后回车。会再弹出个提示框,给远程仓库命名。

步骤3

将远程分支代码合并到当前分支(test),自行选择你需要合并代码的远程分支

git merge xxx/dev

vscode插件

如图所示,合并远程分支到本地。

如果Git报错:fatal: refusing to merge unrelated histories

        这个错误通常发生在尝试合并两个不相关的Git仓库历史时。根本原因是Git无法确定两个不相关仓库的历史如何彼此关联。这两个分支是各自独立创建的,没有共同的基础,因此Git无法找到一个合适的方式来合并它们。Git通过历史记录来跟踪每个提交的父提交,以便构建提交的关系图。当尝试合并两个没有共同祖先的历史时,Git会认为它们是不相关的,因此默认情况下拒绝合并。

        这个问题可以通过在你操作命令后面加–allow-unrelated-histories来解决,该选项允许Git合并没有共同祖先的历史。命令如下:

git merge dev(你要合并的分支) --allow-unrelated-histories

        这将允许Git合并这两个分支,尽管它们没有共同的历史。但是,请注意,这可能会导致一些复杂的合并冲突,需要手动解决。

        合并成功后,需要解决冲突。可以右键点击要合并更改的文件,选择全部采用当前更改/传入的更改。或者在页面当中一个一个选择解决冲突。

        如果业务线使用的内网不同,只有拉取远程分支/提交分支时,需要切换网络,其他本地的操作,网络无所谓。 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐