Git使用 | 您所在的位置:网站首页 › 威廉指标修改后提交不了 › Git使用 |
前提:
1、自己:拉取远程分支A,修改后提交为新分支B; 2、其他同事:修改提交C分支,且比自己先合并进A分支; 现状:A分支有新内容;自己的B分支也有新内容; 需求:把B分支合并进A分支; 若直接把自己的 B分支合并进A分支,有不小可能性会发生冲突;导致A分支发生错误; 解决方法: 1、先更新本地A分支,使本地A分支和远程A分支同步; 2、将自己的修改的B分支,与本地更新后的A分支合并,得到新的B分支; 虽然是把A分支合并进B分支里,但以A分支内容为主,当解决合并冲突时,A文件覆盖B文件; 3、解决合并时产生的冲突 解决冲突后,提交B分支,更新远程B分支; 4、检查合并后的工程是否正常运行: 合并后,A的所有内容完整进入B分支;B分支相对早期A分支有改动的内容,因为冲突覆盖会有内容被修改;故合并后,重新运行项目,解决因冲突导致的bug(参数丢失,场景面板修改,脚本还原等导致不能正常运行); 5、解决B分支Bug后,再提交无误的B分支更新到远程; 6、远程B分支合并进远程A分支; 注:本地AB分支合并后的B分支,相对远程的主分支A,只是在新A分支基础上更前进了一步, 此时B分支合并进A分支,相当于把A直接往前更新,不存在冲突; 具体操作: 第一阶段,本地相关分支合并1、切换本地A分支(早先拉取到本地的A分支),然后更新本地A分支(同步为最新远程A分支); $ git branch -a //查看分支名 $ git checkout A //根据分支名,切回本地目标A分支(本地有A分支) $ git checkout -b 本地分支名 origin/远程分支名 //根据分支名,拉取远程A分支到本地(本地无A分支) $ git pull //同步到远程进度,为之后合并做准备(分支切换、更新等具体操作,可查看先前文章:常用Git指令——本地分支相关 ) 2、切回B分支(在早先A分支基础上切出来修改的功能分支); $ git checkout B //这个是我们做了修改,之后要合并进远程A的分支;4、把更新后的A分支完整合并进B分支 //此时是在 B分支下 git merge A //将B分支与A分支合并![]() 合并后,一般会有冲突,并且会有提示: “有冲突,合并失败,解决冲突后提交实现B分支与A分支的合并” 此时,可以退出git bush ,改使用TortoiseGit可视化操作; 也可选择使用Bush命令行变基,但我这里使用TortoiseGit更清楚; (1)选中工程文件夹,右键选择TortoiseGit——解决冲突; (2)弹出冲突文件列表,依次双击文件,进入文件比较界面;
(3)依次解决每个冲突块: 1)冲突区选择用哪个文件覆盖,作为合并后的文件信息: 选中标记冲突字样后鼠标右键,可选择“使用该文件/该文段”(一般选择A分支文件的文段,同步为远程主分支的修改) 2)解决冲突后,保存,选择标记为 “已解决冲突”;然后关闭界面; 3)继续处理下个有冲突的文件,直到全部冲突文件解决; (可以看到冲突文件列表的右下角就有提示信息:解决冲突后提交变更;) 第三阶段,解决冲突后,使用TortoiseGit提交更新远程B分支也可选择使用Bush命令行提交上传;这里仅详细介绍使用TortoiseGit来提交; (分支更新提交等具体操作,可查看先前文章:常用Git指令——本地分支相关 ) (1)选中项目文件夹,右键选择Git提交->"B功能"分支; (2)弹出提交界面;会显示之前对冲突文件进行修改的信息; (3)设置提交信息 勾选设置日期和作者,提交日志信息(规范提交分支),“提交”; (4)提交时,会出现提示窗口,提示之前合并修改解决冲突文件改变,这里选择“忽略"按钮继续提交;提交完后,并推送到远程; 这时候就冲突解决完,合并完成,并且分支更新到主分支并提交了; 第四部分,检查合并后工程,确认项目无误后,再次提交更新到远程B分支上面提交后,远程B分支就可以直接合并到远程A分支里的,但因之前解决冲突修改覆盖一些项目文件,可能项目存在Bug,得进行下面检查功能操作; 打开本地分支,看看合并后,功能能否正常运行,有问题就修改,再提交没有问题的功能分支; (因为B分支功能是自己写的,比较清楚脚本逻辑,方便修改,所以上面合并冲突时,都是选择A文件覆盖B文件) GitLab/Gitee/GitHub等远程控制平台上,管理员把远程B分支合并进A分支里; 仅需要直接操作的步骤过程,可看我另篇文章: GitLab提交不冲突的功能分支(仅步骤版) |
CopyRight 2018-2019 实验室设备网 版权所有 |