zoukankan      html  css  js  c++  java
  • 如何解决gerrit代码冲突

    日常开发中,我们存在多人开发和同一个人提交多次记录的情况,这就避免不了代码冲突的情况出现。

    下面介绍几种gerrit提交失败的现象,后续会根据大家遇到的情况,持续更新。

    注意:出现合入不了,显示“cannot merge”,首先尝试下点击下页面得rebase按钮,如下:

    如果还是显示冲突,在使用下面的方法

    情况一:报错“Submit including parents”

     举例:程序员A在bbb分支上创建(修改)了test.txt文件,并提交到gerrit上,此次提交为commit1,但是没有合入,此时test.txt的内容如下:

    hello, this is commit1

      然后A又在本地修改了test.txt,然后提交到了gerrit上,此次提交为commit2,此时test.txt的内容如下:

    hello, this is commit1

    hello, this is commit2

    此时gerrit上就有两次提交,很明显,commit2的内容包含了commit1的内容,可认为commit1是commit2的parent节点。

    A想,既然commit2 包含了commit1,直接提交commit2就好了,于是就把commit1执行了abondon丢掉了,此时gerrit 代码review的时候发现失败了,显示为“Submit including parents”,如下:

    那么解决问题的关键点就是解决冲突。

    此时解决的步骤如下:(我们用test工程来说明问题)

    1. 克隆一份新的代码到本地                

        git clone ssh://anl@$gerritip:29418/test

                   (主要是为了防止在原工程下操作,导致切分支失败或者代码不小心丢了,如果不想克隆代码,可以先将本地的改动使用git stash命令保存下,关于git stash的使用不在本文中说明,可自行查找)

    1. 基于冲突问题分支创建一个新的分支,比如冲突问题分支为bbb,新建分支为ccc

        git checkout -b ccc remotes/origin/bbb

    1. Cherry-pick 改动到本地

           Cherry-pick命令来自gerrit上的download下箭头,位置如下:

    cherry-pick-command.PNG

    直接复制这条命令下来,执行:

    git fetch ssh://anl@$gerritip:29418/test refs/changes/88/788/1 && git cherry-pick FETCH_HEAD

    然后执行git status,如下:

    test1.PNG

    备注:新建的文件,会如上显示,如果是修改原文件,git status 会显示冲突文件前会显示“conflicts:”字段,显示什么不重要,重要的是git status看出有问题的文件是哪个。

    有冲突的,开发判断哪些代码是需要的,冲突内容按照如下方式显示:

    》》》》》

      原来gerrit上的内容

    ==============

     你的修改

    《《《《《《《《

     

    删除冲突部分,然后再执行git add,如下:

         git add test.txt

    备注,如果git status看到的所有文件都是需要提交的,直接“git add .”即可,否者按需要执行git add。

     然后再执行git commit -s ,此时会看到如下,删除其中的conflicts和对应的文件,如下

    11.PNG

    保存后推出继续提交,然后执行git push origin HEAD:refs/for/问题分支,比如下:

    33.PNG

    Git push执行成功后,再刷新gerrit页面,submit按钮有了,可以提交了,如下:

    22.PNG

    点击submit即可提交。

  • 相关阅读:
    Linux查看占用内存前10的命令
    使用RestTemplate调用SpringCloud注册中心内的服务
    Eureka集群配置
    MySQL常用命令集合(偏向运维管理)
    pytest: error: unrecognized arguments报错解决
    MongoDB的安装
    MongoDB多条件分组聚合查询
    在排序数组中查找元素的第一个和最后一个位置
    搜索二维矩阵
    搜索旋转排序数组
  • 原文地址:https://www.cnblogs.com/zndxall/p/9140813.html
Copyright © 2011-2022 走看看