- merge 是一個合并操作,會將兩個分支的修改合并在一起,默認操作的情況下會提交合并中修改的內容
- merge 的提交歷史忠實地記錄了實際發(fā)生過什么,關注點在真實的提交歷史上面
- rebase 并沒有進行合并操作,只是提取了當前分支的修改,將其復制在了目標分支的最新提交后面
- rebase 的提交歷史反映了項目過程中發(fā)生了什么,關注點在開發(fā)過程上面
- merge 與 rebase 都是非常強大的分支整合命令,沒有優(yōu)劣之分,使用哪一個應由項目和團隊的開發(fā)需求決定
- merge 和 rebase 還有很多強大的選項,可以使用 git help <command> 查看
- 使用 merge 時應考慮是采用 --no-ff 默認操作,生成一個對回顧提交歷史并不友好的合并記錄,還是采用 --ff-only 方式
- rebase 操作會丟棄當前分支已提交的 commit,故不要在已經 push 到遠程,和其他人正在協(xié)作開發(fā)的分支上執(zhí)行 rebase 操作
- 與遠程倉庫同步時,使用 pull 命令默認進行了 git fetch + git merge --no-ff 兩個操作,可以通過加上 --rebase 命令將 fetch 后的 merge 操作改為 rebase 操作,或者僅僅 'git fetch remoteName',然后才思考采取哪種整合策略 git merge(or rebase) origin/master
- 開發(fā)與 commit 時注意自己此時在哪個分支上,當有修改未 commit 時,不能進行 rebase 操作,此時可以考慮先用 git stash 命令暫存