Gerrit代码提交冲突

问题背景:

我先在gerrit上进行了一笔提交A,在代码合入等待期间,同事提交并合入了B,此时我的提交A已经造成冲突没有办法合入。

 

 

解决方法一:

  1. 将代码回退至某一版本

Git reset commitID

若是出现unstaged changes after reset,M app/….

则 git checkout .

   Git clean –fd

清楚之前拉下的冲突代码,此时本地代码是上一笔提交时候的代码(期间本地做的修改全部没有了,因此回退之前注意保存)

 

  1. git pull

拉下最新代码

 

  1. 使用beyondCompare对比拉下之后的代码以及自己的保存代码(本地修改的),手动进行对比添加
  2. 完成后,提交。Git add.  Git commit …  git push

 

 

解决方法二(待尝试):

  1. 直接git pull –rebase拉下本地代码,解冲突
  2. 将本地修改直接合入到上一笔提交A上

 

 

另外一篇解读git pull --rebase (代码提交与解冲突流程,写的很好,下面是全文)

 

在使用git的过程中经常需要使用到git pull命令,在更新远端代码的同时如果与本地代码产生冲突了,

那么冲突的文件中就出现了需要手动合并的部分,而git pull --rebase不同的地方则是当有这些冲突存在时,

git帮我们自动创建了一个新的分支,并且git告诉你接下来你要在这个新的分支上处理这个冲突,

此时执行git status命令后可以看到首要的提示是这样的:

rebase in progress; onto 24f42c6
You are currently rebasing branch 'master' on '24f42c6'.
(fix conflicts and then run "git rebase --continue")

并且git还告诉我们 fix conflicts and then run "git rebase --continue",意思是解决冲突然后执行git rebase --continue命令,

其实git rebase --continue的正确操作应该是确认处理好冲突后则将调整好的文件添加到暂存区,并执行git rebase --continue命令告诉git,我已经解决好冲突了,

并且已经将处理后的文件添加到了暂存区,现在可以将这些文件commit了,

简单来讲就是正常的解决冲突过程是

1,git add .

2,git commit -m "..." 

3,git push时因为本地仓库代码与远程仓代码有冲突,所以接下来

4,git pull拉取远程代码,而冲突需要手动解决

5,解决好后重新进行git add . git commit -m".." git push

 

而git pull 这一步如果加上了 --rebase的选项,那么第5步操作将变成如下

git add .

git rebase --continue

git push

 

所以git pull --rebase用在合并代码的时候其作用就是在一个随机创建的分支上处理冲突,避免了直接污染原来的分区

 

 

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值