我到底应该用git-merge还是git-rebase呢?( 二 )


merge:会把公共分支和你当前的commit 合并在一起 , 形成一个新的 commit 提交 。
两者的使用场景merge命令一般用于将开发分支、热修复分支等合并到主分支上 , 因为该命令不会修改分支的历史信息 , 只会增加新节点 , 非常适合主分支这种稳定性且需要用于版本控制的分支上 。
rebase命令一般用于将基分支的新提交记录 , 合并到正在进行开发任务或修复任务的分支上 , 因为该命令能保证开发分支的历史与基分支的历史保持一致 , 从而减少污染性 。
但要注意 , rebase命令最好不要用于一个公共的分支 , 假设你们公司的开发分支是一个公用的分支 , 此时多人在这个分支上开发 , 由于rebase的修改历史的特点 , 可能会出现丢失修改的问题 , 对于这种运用 , 建议团队之间进行沟通后决定使用merge或rebase来保证该公用开发分支的可用和完整 。
我在工作中的运用在工作中 , 我们会拥有自己的开发分支 , 在完成需求需要进行版本迭代的时候 , 会将开发分支的提交合并到master上 , 一般我的操作如下:
a. 通过git stash , 将我自己开发分支的代码保存到暂存区中 , 恢复本地仓库到修改前的状态;
b. checkout master进入主分支 , git pull拉取master的最新commits;
c. checkout mydev进入开发分支 , 通过git rebase master将master最新的提交 , 合并到自己的开发分支上 ,保证该分支的历史提交与master相同;
d. git stash pop将自己的修改取出;git commit、git push提交到远程开发分支上;
【我到底应该用git-merge还是git-rebase呢?】e. 发起merge请求 , 合并到master分支;