Merge和Rebase区别
如图测试代码,在main分支中,每打印一行进行一次提交,完成第六次提交后创建branch-01分支,并在main分支中继续进行第七次和第八次提交;在branch-01分支中进行第7次和第8次提交,注意main是用的中文七八,branch-01用的数字78
Merge into Current
发起合并自动从commit不同的地方开始合并,合并后效果如下
合并后的main分支从commit不同开始会看到两条线,绿色框表示合并后的位置,这个位置来自于main中第八次提交和branch-01第8次提交的合并,合并点能看到合并的历史记录,且只会解决一次冲突
如果你想撤销这次合并,让main分支回退到第八次提交执行:git reset --hard head^ main分支又回到了原来的样子
Rebase Current onto Selected
发起rebase后从commit不同开始,将发起rebase分支的最后一个commit和main的第一个commit进行合并,若冲突产生一个新的commit,新的commit再和main中的第二个commit进行合并若冲突产生新的commit,以此类推,直到合并完
产生第seven次提交
第seven次提交与第八次提交合并产生第eight次提交
Rebase合并简图
合并后的效果
合并后在main分支只会看到一条线,且没有合并历史记录,合并后的main分支要回退到合并前的样子需记住找到第八次提交的commitId,git reset --hard commitId,若直接git reset --hard head^会回退到第seven次提交