携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情
在开发项目之前或是提交代码之前,都会习惯性的执行一次拉取代码的操作,在本地解决冲突后再提交。在webstorm内置的git中,拉取代码时会弹出一个弹窗,包括两种选项:分别是merge 和 rebase
merge 和 rebase 这两个指令,都是常用的进行分支合并的操作,但是原理并不相同,第一次看到这个弹窗的时候很好奇这两个操作到底有什么不同,在执行操作之后,当前分支的代码会受到怎样的影响?
当前分支结构
假设当前分支结构包含 master 和 develop 两个分支,当前操作分支为deveop。
git rebase
rebase 的英文含义是“变基”,即改变基底。在原有提交的基础上将差异内容反映进去。
git rebase命令的作用就是在另一个分支基础之上重新应用,用于把一个分支的修改合并到当前分支。
执行后分支的结构:
可以看出在执行git rebase 指令后结点的顺序发生了变化
操作指令:
git rebase -i <commit>
如果解决冲突后继续进行合并,执行:
git rebase --continue
git merge
merge 的含义在于“合并”,merge合并分支会新增一个merge commit(merge后时间线并未打乱,而rebase后变了)
执行后分支的结构:
注:
-
现有分支不会以任何方式被更改
-
git pull相当于: git fetch + git merge
-
git pull -r,相当于 git pull –rebase,也就是 git fetch + git rebase
总结
git rebase 执行后会将已经发生的多次提交压缩成一次提交,提交历史更加简洁。
git merge 合并两个分支并生成一个新的提交,能够展现出明显的时间线。