关于Rebase the current branch on top of incoming changes 与 Merge incoming changes into the current bran,我们在更新项目的时候会用到,此时分三种情况讨论:
本地和远程代码一样
merge和rebase无区别(代码无变化)
远程代码已修改,本地未修改
1、Rebase
此时相当于同步(pull)远程代码到本地
2、Merge
直接合并不提示
远程代码未修改,本地已修改
1、Rebase
此时相当于同步(push)本地代码到远程
2、Merge
直接合并不提示
远程代码和本地代码均已修改
1、Rebase
找到两者的共同祖先版本(项目刚开始、远程和本地代码一样时的版本),把这之后本地代码的所有修改操作一步步追加到远程代码的最新版之后
2、Merge
手动合并并commit
最后总结:
1、Rebase the current branch on top of incoming changes
- 本地代码push到远程上,在远程合并,无commit记录(用的较少,大佬对自己有自信可以用)
- 基于远程代码的最新版本,将本地修改全部commit并提交记录
- 可能对远程代码造成破坏
2、Merge incoming changes into the current bran
- pull远程代码到本地进行合并,并commit,生成commit记录(如果本地代码一直未修改则相当于同步远程最新代码到本地)
参考博文:
- https://blog.csdn.net/qq_25881443/article/details/108489394
- https://blog.csdn.net/qq_21187515/article/details/103300226