git merge简要说明
- git merge会产生一次新的commit版本,并且此版本会有2个或者更多个父提交,可以通过HEAD^1,HEAD^2,HEAD^n方法来引用此提交的父提交。
- git merge是非破坏性的(non-destructive)操作,没有负作用,并且被合并的这些分支都可以git push发布到remote公共仓库中。
- 由于每次合并会产生一次新的提交历史,如果主分支非常活跃,就会产生很多这种合并分支的提交历史,会对项目本身的提交历史产生污染。
git-rebase-test.sh测试脚本
git rebase简要说明
- git rebase 会产生一个修改过的很干净的项目提交历史,例如在feature分支上git rebase master,会将feature分支上的提交添加到master分支的最顶端。
- git rebase操作有负面效果,影响项目提交历史的安全性(safety)和可追溯性(traceability)。
- git rebase -i master可以交互式压缩提交(squash)或者忽略指定提交。
- git rebase使用黄金守则: NEVER USE IT ON PUBLIC BRANCHES.
- 不要将主分支rebase到特性分支上(don’t rebased master onto your feature branch: git rebase feature)。
- 其他开发者提交的新特性和修改(如patch)应该创建一个临时分支apply这些修改,再使用git merge合并修改到主分支上,而不是使用git rebase方式操作,因为rebase操作修改了提交历史,很难追溯哪些提交新增了这些特性和修改。