Merge和Rebase区别

429 阅读1分钟

Merge和Rebase区别

image-20220518001312486.png image-20220518001333946.png 如图测试代码,在main分支中,每打印一行进行一次提交,完成第六次提交后创建branch-01分支,并在main分支中继续进行第七次和第八次提交;在branch-01分支中进行第7次和第8次提交,注意main是用的中文七八,branch-01用的数字78

Merge into Current

image-20220518001905100.png 发起合并自动从commit不同的地方开始合并,合并后效果如下 image-20220518002335308.png 合并后的main分支从commit不同开始会看到两条线,绿色框表示合并后的位置,这个位置来自于main中第八次提交和branch-01第8次提交的合并,合并点能看到合并的历史记录,且只会解决一次冲突 image-20220518002506040.png 如果你想撤销这次合并,让main分支回退到第八次提交执行:git reset --hard head^ main分支又回到了原来的样子

Rebase Current onto Selected

image-20220518003201385.png 发起rebase后从commit不同开始,将发起rebase分支的最后一个commit和main的第一个commit进行合并,若冲突产生一个新的commit,新的commit再和main中的第二个commit进行合并若冲突产生新的commit,以此类推,直到合并完

image-20220518003257879.png 产生第seven次提交

image-20220518003803666.png 第seven次提交与第八次提交合并产生第eight次提交

Rebase合并简图

image-20220518005833837.png 合并后的效果 image-20220518004036372.png 合并后在main分支只会看到一条线,且没有合并历史记录,合并后的main分支要回退到合并前的样子需记住找到第八次提交的commitId,git reset --hard commitId,若直接git reset --hard head^会回退到第seven次提交