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

下面介绍几种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. ubuntu部署git

    先更新本机内置的程序. sudo apt-get updatesudo apt-get upgrade再判断系统是否内置了add-apt-repository命令,如果没有执行下列命令安装 sudo ...

  2. Vue 超快速学习

    Vue 超快速学习 基础知识: 1.vue的生命周期: beforeCreate/created. beforeMount/mounted. beforeUpdate/updated. beforeD ...

  3. 闭区间套定理(Nested intervals theorem)讲解1

    ① ②这里用到了极限与不等关系 ③如果a≠b,那么便不会有$\lim _{n\rightarrow \infty }\left| I_n \right| =0$ ④如果还存在一点c在 内,那么同样也不 ...

  4. Docker容器与容器云之Docker单机集群部署案例

    准备工作: CentOS 7安装docker: #yum -y install docker 1.获取节点所需镜像 --主机执行 #docker pull django #docker pull ha ...

  5. [cloud][sdn] network namespace

    man 手册关于IP netns的介绍: http://man7.org/linux/man-pages/man8/ip-netns.8.html 一个非常好的介绍,有概念,有操作: http://c ...

  6. python 遍历list并删除部分元素

    python 遍历list并删除部分元素https://blog.csdn.net/afgasdg/article/details/82844403有两个list,list_1 为0-9,list_2 ...

  7. LeetCode 937 Reorder Log Files 解题报告

    题目要求 You have an array of logs.  Each log is a space delimited string of words. For each log, the fi ...

  8. linux链接库的理解

    前段时间遇到个奇怪的问题,经调试是由于可执行程序A编译时使用的libssl.so.1.1及对应版本头文件,A链接的库libtest.so编译时使用的libssl.so.1.0及对应版本头文件,执行时l ...

  9. java 集合(四)HashSet 与 LinkedHashSet

    查看源码: HashSet底层new 了HashMap 哈希表的结构: Demo: package cn.sasa.demo2; import java.util.HashSet; import ja ...

  10. 【SQL】SQL存储过程相关当前理解。(@temp=……)

    1.下图左侧红框中的是SQL的存储过程,是程序同SQL之间互相调用的函数.——这里先作为了解不做深入研究. 比如客户通过ATM提款机取200元钱,程序中提交取200元钱操作,后续可能会进入SQL进行一 ...