赞
踩
问题背景:
我先在gerrit上进行了一笔提交A,在代码合入等待期间,同事提交并合入了B,此时我的提交A已经造成冲突没有办法合入。
解决方法一:
Git reset commitID
若是出现unstaged changes after reset,M app/….
则 git checkout .
Git clean –fd
清楚之前拉下的冲突代码,此时本地代码是上一笔提交时候的代码(期间本地做的修改全部没有了,因此回退之前注意保存)
拉下最新代码
解决方法二(待尝试):
另外一篇解读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用在合并代码的时候其作用就是在一个随机创建的分支上处理冲突,避免了直接污染原来的分区
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。