git 变基解决冲突(rebase)

场景:A同学修改了active.php文件,提交并推送到dev分支。

   B同学没有拉取A同学推送的内容下来,又修改了active.php文件,然后此时提交,然后推送就报冲突了。此时如果用sourcetree是拉取也会报错的。

 

解决方法:

第一种:

sourcetree切换到别的分支,在切换回来,然后拉取就不会报错。有冲突就解决冲突,标记冲突为已解决。然后提交推送

 

第二种:

sourcetree拉取,直接勾选 用变基代替合并 ,然后拉取。有冲突就解决冲突,标记冲突为已解决。然后提交推送

 

 

第三种:

用vscode编辑器,直接拉取合并。有冲突就解决冲突,然后提交,它会自动处理好。

 

第四种:

到项目文件页面,打开git Bash Here, 然后执行 git pull --rebase 。然后有冲突解决冲突,在继续变基。没冲突直接变基成功。

参考链接:https://blog.csdn.net/weixin_46074961/article/details/126543602

 git pull --rebase (将本地当前分支里的每个提交(commit)取消掉,然后把将本地当前分支更新为最新的"origin"分支)

git rebase --abort 会放弃合并,回到rebase操作之前的状态【也就是修改文件没提交的状态,但是文件修改内容不会丢失】,之前的提交的不会丢弃;

git rebase --skip 则会将引起冲突的commits丢弃掉(慎用!!)【会把B同学修改的都干掉】

git rebase --continue 合并冲突,结合"git add 文件"命令一起用与修复冲突,提示开发者,一步一步地有没有解决冲突。(fix conflicts and then run “git rebase --continue”)

对上述冲突的处理

1、使用 $git rebase --abort

执行之后,本地内容会回到提交之间的状态,也就是回到以前提交但没有pull是的状态,简单来说就是撤销rebase。

2、使用 $git rebase --skip

git rebase --skip 引起冲突的commits会被丢弃,对于本文应用的例子来说B同学对active.php文件的commit无效,B同学自己修改的部分全部无效,因此,在使用skip时请慎重。

3、使用 $git rebase --continue

执行完$git pull --rebase 之后,本地如果产生冲突,手动解决冲突之后,用"git add"命令去更新这些内容的索引(index),然后只要执行:

$ git rebase --continue 就可以线性的连接本地分支与远程分支,无误之后就回退出,回到主分支上。
注意:一般情况下,修改后检查没问题,使用rebase continue来合并冲突。

 

posted @ 2023-03-23 10:47  会飞的鹏  阅读(1697)  评论(0编辑  收藏  举报