解决git冲突的一些方式
当在其他地方提交push, 发生冲突:
直接git pull 可能覆盖代码
git stash -> git pull -> git stash pop -> git add. -> git commit -m “” -> git push
如果过程中出现了no branch问题, 说明你在匿名分支下,解决完冲突后, git rebase --continue, 再次重新add. commit push
可以使用 git push -f 表示强制以当前代码覆盖之前提交的
解决git冲突:
方式一:
当两个地方同时发生改变, A 先提交, B再git pull 就会报错, 此时B应该git stash 一下缓存下来自己的更改, 再git pull 拉取下来,
此时可以看到A提交的最新情况,但看不到B的更改,此时B执行git stash pop,就可以看到二者的冲突了。
其实这上边的git stash操作可以替换为 (git add 文件 + git commit 文件), 那么执行git pull的时候就会发生冲突,此时可以同时 看到A和B的更改,并且有相应的标注。
方式二:
当A提交代码, B执行git add. --> git commit -m “jt” --> git push(报错) git pull --rebase //此时会进入一个临时的分支, 若不加 --rebase 默认是 merge方式
这个过程就可以看到拉下来的最新代码以及自己的冲突代码, 自己去做一些调整 git add . //上边调整好后,执行git add .
git rebase --continue //因为刚才是在一个临时分支解决冲突,现在回归到我们原来的分支
到这里为止, git log查看一下commit记录, 可以发现,包含了远程分支的最新commit,以及自己刚才的那条commit记录
已经解决冲突了,此时git push 推送最新内容即可 git push orign/master
上述的两种方式,git pull 和 git pull --rebase的区别在于 git pull 会将远程分支的最新commit 与自己刚才的commit记录合并,即只能看到自己刚才的最新commit记录
而git pull --rebase 会将远程分支的最新commit 与自己刚才的commit记录 都保留,即能看到两条commit记录
也可以使用 git diff命令来查看冲突的详细信息,然后手动编辑冲突文件,解决冲突。完成后,使用 git add和 git commit命令提交修改