当前位置: 首页 > 后端技术 > Java

冲突还在用gitmerge吗?互联网公司都用gitrebase

时间:2023-04-01 19:01:10 Java

gitmerge和gitrebase。目的是将一个分支的提交合并到另一个分支中。gitmerge在gitlab上创建一个新项目,并向其推送一个测试文件。2.在本地修改测试文件并进行两次commit,每次commit在文件中添加一句话。3.直接在远程仓库修改文件并提交,模拟其他开发者的提交。4.如果此时我把本地的提交推送到远程,会被Rejected,因为远程和本地已经有了自己的commit。我们通常的做法是gitpull,在本地解决冲突,然后继续push。本质上,gitpull=gitfetch+gitmerge产生冲突:handleconflicts:addagainCommit然后push,可以看到merge一定算是一个新的commit:gitrebase如果我们在这里使用gitpull--rebase时间,也就是=gitfetch+gitrebase和本地commit2次一样,远程commit2次可以看到gitpull--rebase还是会提示我们处理冲突,但是从git可以看出log明显已经发生了rebase,也就是rebase,并且本地分支是根据最近一次远程commit,而不是最后一次本地commit处理冲突,每次处理本地commit冲突,使用gitadd标记冲突已经发生处理完毕,使用gitrebase--continue继续处理下一个本地提交,或者使用gitrebase-i先将本地提交合并为一个提交,这样gitpull--rebase可以一次处理所有冲突。推送到远程后,在分支图中可以清楚的看到。与merge不同的是rebase不会产生分支,不会产生新的提交