git 踩坑 1.0

1、 问题概述

周五快下班时候 遇到一个git的坑 现记录一下,周五快结束的时候,把本周陆陆续续开发的一个功能准备合入的dev分支,由于两方面的问题,导致提交merge请求失败:
合入的新功能的本地分支是在大概八九天前从master分支创建的,由于本周陆续有其他高优先级的任务,故在周五自测完毕准备上远程库的时候,提出megre请求直接报有冲突。
1、本地分支在创建的这八九天内,同事陆陆续续以及有合入到master和dev分支的迭代演进功能:造成了远程master分支和我本地分支在这最近八九天内都在各自演进,造成 出现了 节点 “分叉”。
2、本次修改的两个文件中 在这几天时间内,已有同事修改过并且在我提交前 已上库,造成我本地 这两个文件在合入是引入“冲突” 。

2、解决

1、使用 git rebase 命令 重新拉去新的基线,是我本地分支的在最近的演进的内容 连接到最新版本的最后面的位置,使其看起来 是“一条线”。
在没有 使用 git rebase命令前:本地分支节点如下所示:
在这里插入图片描述
孤立的节点

在使用 git rebase后将其孤立的节点 重新“指向”最新节点的最后方,变成一条线:如紫色的那条线
在这里插入图片描述

命令 git rebase origin

2、解决冲突
在使用 git rebase origin命令后 很有可能因为 本次修改的文件 中和 远程库中的版本不一致 造成冲突问题,因此需要手动解决该冲突,可以直接使用idea的图形化界面进行操作:
具体位置如下所示:
git 踩坑 1.0_第1张图片

会出现 reslove 字段 让你选择 ,然后根据实际修改内容 进行修改。 最后由于修改后可能造成冲突解决了 但是上个版本修改的内容 遗失了 需要补全:

遗失的节点补全后 冲突文件的历史记录如下所示:

git 踩坑 1.0_第2张图片
在解决冲突冲突的时候还有可能出现 在 使用 git rebase --continue 时 报错类似于这样的错:

git 踩坑 1.0_第3张图片

此时 应该时冲突已解决并合并了 直接使用 git rebae --skip 略过本次 commit

3、之前遇到的问题

由于 创建分支不是从master分支拉的 ,且 dev和master分支 代码不一样,造成 从dev拉去的分支 合入 dev没问题,但是在合入master分支时 会将不属于 本次自己修改的文件 (dev中的特性代码)出现在合入 master分支的 代码列表中:

此时解决方法::切换到master分支 ,git pull后重新拉去一个本地分支 然后使用 git cherry pik(可直接在idea图形化界面操作)将本次修改的提价记录 cherry pik下来,然后 git push到远程master分支。

你可能感兴趣的:(git)