git merge和git rebase的功能是类似的,它们都被设计来将一个分支的更改合并入另一个分支。
1. git merge
merge master into the feature branch将master分支合并到feature分支,最简单的办法就是使用以下命令:
git checkout feature
git merge master
或者,你也可以把它们压缩到一行里:
git merge master feature
feature分支会产生一个新的commit,包含了master分支的变更。
merge是一个安全的操作,现有的分支不会被更改,避免了rebase 的潜在缺点。另一方面,这同样意味着每次merge时feature分支都会引入一个外来的merge commit,如果master分支非常活跃的话,这或多或少会污染你的分支历史,从而增加理解项目历史的难度。
2. git rebase
rebase the feature branch onto master作为merge操作的替代选择,你可以像下面这样将feature分支并入master:
git checkout feature
git rebase master
它会把feature分支整体移动到master分支后面,有效的把master分支上所有新的commit都合并到feature分支上。因此rebase重写了feature分支的项目历史。
rebase最大的优势是你的项目历史会非常的简洁,它不像git merge那样产生新的提交,并且如图所示,rebase导致你的项目历史呈现出完美的线性结构,这让你更容易使用git log,git bisect,gitk查看项目历史。
网友评论