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

下面介绍几种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下箭头,位置如下:

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

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

然后执行git status,如下:

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

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

》》》》》

原来gerrit上的内容

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

你的修改

《《《《《《《《

 

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

git add test.txt

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

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

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

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

点击submit即可提交。

如何解决gerrit代码冲突的更多相关文章

  1. 利用idea解决git代码冲突问题

    问题描述:在开发过程中,如果你开发的代码与其他人造成冲突,在不处理的情况下会无法拉取,并且提交容易造成代码丢失: 解决方法: [此方法是同事郭富城的分享] 1,由于冲突,我们每次拉取都会失败,这时我们 ...

  2. 【SVN多用户开发】代码冲突&解决办法

    SVN是一款集中式的代码存储工具,可以帮助多个用户协同开发同一应用程序. 但是SVN不能完全代替人工操作,有时也需要程序员自己进行沟通确认有效的代码. 下面就简单的看一下,常见的代码冲突以及解决方法. ...

  3. Git:代码冲突常见解决方法

    摘自: http://blog.csdn.net/iefreer/article/details/7679631 如果系统中有一些配置文件在服务器上做了配置修改,然后后续开发又新添加一些配置项的时候, ...

  4. git解决代码冲突

    1.当项目开发是几个人的时候,难免会出现代码冲突,使用git命令行解决冲突的方法如下: git checkout develop git pullgit checkout feature/新建会员功能 ...

  5. git与eclipse集成之代码冲突与解决

    1.1. 代码冲突与解决 目前使用git管理代码,产生冲突的原因,主要是当多个人向特性分支提交代码时,如果两个人修改了同一个文件,第二个人提交代码时就可能会冲突. 举例说明: 创建远程特性分支.远程个 ...

  6. gerrit代码审核工具之“error unpack failed error Missing unknown”错误解决思路

    使用gerrit代码审核工具时遇到error: unpack failed: error Missing unknown d6d7c89bd1d77f44c5c8e99437aaffbfc0684e7 ...

  7. 记录一次gitlab版本回退以及代码冲突解决流程

    版本回退 git clone -b 分支名 项目地址 克隆需要回退的分支代码 git pull    保证代码提交记录最新 git log --pretty=oneline    以行的形式展示提交记 ...

  8. Git代码冲突常见解决方法

    在发布这个配置文件的时候,会发生代码冲突: error: Your local changes to the following files would be overwritten by merge ...

  9. Git:代码冲突常见解决方法【转】

    本文转载自:http://blog.csdn.net/iefreer/article/details/7679631 如果系统中有一些配置文件在服务器上做了配置修改,然后后续开发又新添加一些配置项的时 ...

随机推荐

  1. 7.17python

    1.事件: # !/usr/bin/env python # !--*--coding:utf-8 --*-- # !@Time :2018/7/17 10:38 # !@Author TrueNew ...

  2. 使用 tabindex 改变Tab 键顺序

    使用 tabindex原文 https://developers.google.cn/web/fundamentals/accessibility/focus/using-tabindex 在表单上使 ...

  3. python使用selenium安装chromedriver的问题

    环境 win64位,python3.6, 问题与解决 说来也巧,今天无意中解决了两个多月前的问题,即用selenium调用chrome浏览器报错的问题:起因是在知乎中看到了一篇12306抢票的文章,用 ...

  4. Android热门网络框架Volley详解[申明:来源于网络]

    Android热门网络框架Volley详解[申明:来源于网络] 地址:http://www.cnblogs.com/caobotao/p/5071658.html

  5. Android开发-基本概念(申明:来源于网络)

    Android开发-基本概念(申明:来源于网络) 地址:http://blog.csdn.net/iwanghang/article/details/53505926

  6. org.hibernate.HibernateException: connnection proxy not usable after transaction completion

    今天yuan男神的程序报了这个错, getHibernateTemplate().saveOrUpdate(obj); getHibernateTemplate().flush(); getHiber ...

  7. 洛谷P1908 逆序对【递归】

    题目:https://www.luogu.org/problemnew/show/P1908 题意:给定一个数组,求逆序对个数. 思路: 是一个很经典的题目了.通过归并排序可以求逆序对个数. 现在有一 ...

  8. 12.4 hdfs总结

    启动hdfs 需要在namenode 节点 上 s11 启动yarn 需要在resourceManager 节点上 namenode, resourceManager 都需要在整个集群中都是可以无密登 ...

  9. Django 的操作

    安装: pip install Django 创建django工程 django-admin startproject  mysite python manage.py startapp blog / ...

  10. Flink – Stream Task执行过程

    Task.run if (invokable instanceof StatefulTask) { StatefulTask op = (StatefulTask) invokable; op.set ...