当前位置:   article > 正文

Gerrit代码提交冲突_gerrit indirect ancestor

gerrit indirect ancestor

问题背景:

我先在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用在合并代码的时候其作用就是在一个随机创建的分支上处理冲突,避免了直接污染原来的分区

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/68194
推荐阅读
相关标签
  

闽ICP备14008679号