Skip to content
Xiaoyu's Blog
Go back

建议用rebase而不是merge

📝 rebase和merge的区别

📢
git pull−−rebase和git pull区别是git fetch + git merge FETCH_HEAD的缩写,所以默认情况下,git pull就是先fetch,然后执行merge操作,如果加-rebase参数,就是使用git rebase代替git merge 。

$ git pull --rebase和$ git pull区别

是

git fetch + git merge FETCH_HEAD

的缩写,所以默认情况下,

git pull

就是先fetch,然后执行merge操作,如果加-rebase参数,就是使用git rebase代替git merge 。更新本地仓库

merge 和 rebase

merge 是合并的意思,rebase是复位基底的意思。

现在我们有这样的两个分支,test和master,提交如下:

		  D---E   test
    /
A---B---C---F master

在master执行git merge test然后会得到如下结果:

			D--------E       
    /          \
A---B---C---F---G     test,master

在master执行git rebase test,然后得到如下结果:

A---B---D---E---C---F   test,master

可以看到merge操作会生成一个新的节点,之前提交分开显示。而rebase操作不会生成新的节点,是将两个分支融合成一个线性的操作。

通过上面可以看到,想要更好的提交树,使用rebase操作会更好一点,这样可以线性的看到每一次提交,并且没有增加提交节点。

在操作中。merge操作遇到冲突时候,当前merge不能继续下去。手动修改冲突内容后,add 修改,commit 就可以了

而rebase操作的话,会中断rebase,同时会提示去解决冲突。解决冲突后,将修改add后执行git rebase -continue继续操作,或者git rebase -skip忽略冲突。

🤪实践

一、新建项目和仓库 git-demo

github:https://github.com/xiaoyuuuuuupeng/git-demo

二、尝试两个用户提交代码冲突

1、在github仓库上,使用登录用户在页面上提交代码

Create README.md && Modify

增加一句 : ### first commit from github

commit && push

2、在idea中,先不pull代码,也新增一个README.md文件

增加一句:### my commit is first commit

commit && push

3、idea中commit && push

提示冲突,冲突解决使用rebase

同样的,需要解决冲突,进行merge

再push成功,查看git log

4、使用merge再试一次

5、查看Git log 看到merge 和 rebase对比

可以看到merge后,整个Git提交树会很乱,看不清楚提交先后顺序


Share this post:

Previous Post
重学Vue-day02
Next Post
一句鸡汤文