What
git-rebase - Reapply commits on top of another base tip
git rebase命令允许在一个基础提交上重新应用另一个分支的提交,属于整合不同分支的两种方法之一(merge, rebase)。
与git merge命令的区别:git日志中不会保留分支的提交节点
命令 | git merge | git rebase |
---|---|---|
优点 | 保留原始合并日志信息 | 删繁就简,避免分支过多 |
缺点 | 使分支杂乱冗余 | 无法保留合并操作的日志 |
Why
如果一味地git merge
,将会造成日志中分支过多,(实际上最大的影响是日志不好看!!) 影响实际开发中问题的回溯、追查。
如果只在适当的时机使用git merge
就能避免这种情况。例如:在新增重大feature或fix重大BUG或有一次重大BREAKING CHANGE时,利用git merge
命令使原始合并日志保留下来以便日后检查本次合并时的错误;在多数情况下使用git rebase
命令来避免分支过多、合并日志过多,(使提交日志更加简洁)方便日后回溯、追查实际的提交而不用花额外时间和精力在合并提交上。
How
- 若自己的变更还未提交,则建议先拉取到最新代码并解决冲突(若有的话)再进行提交和推送
- 若自己的变更已经提交但因为远程仓库有更新而推送失败,则建议在拉取代码时使用
git pull --rebase
- 若是新增重大功能或修复重大漏洞或有一次重大不兼容改动,则建议使用
git merge
不要进行变基 - 对于已经推送的提交(已经存在于自己仓库之外),则建议永远不要回滚提交并改用变基重新推送,因为会影响他人!!