标签: gitgit
有一次被人问到怎么把一个分支的全部commit按一个commit合并到主分支上,当时一脸蒙B,平时开发都是直接merge,不多考虑到这种问题,因而特地搜索了相关资料。编辑器
其实在开发中,咱们永远都是保留一个主master分支干静,咱们都是会从新拉一个dev分支作开发,遇到BUG就会拉BUG分支解决BUG,可是在分支上作开发和解决BUG不仅会有一个提交,而合并到主干上也没有必要让别的开发看到冗余的commit信息,其实别的开发只要须要看到这个分支是解决了什么问题或者开发了什么任务便可。.net
按普通的提交流程是:3d
git checkout master //切换回主分支 git pull //拉取master代码 git merge dev //如无冲突就已经合并成功如遇冲突就解决冲突再提交代码
若是想合并分支commit到主分支能够按以下走法:code
git checkout master //切换回主分支 git pull //拉取master代码 git merge dev --squash //如遇冲突就解决冲突 git commit -m "这里是注释"
原理就是--squash会把分支上的全部相对master分支的修改一次性推送到本地,这样就能够解决在master上只会看到一个提交了。blog
另外一种方法就是经过rebase来作合并commit再merge到master分支
1:假设当前在dev分支上,提交了二条commit修改,在dev分支上执行以下代码开发
git rebase -i master
这时 git 会打开编辑器,你会看到 dev 分支上的 2 个最新 commit,以及一些指引提示
以下图
get
每一个 commit 前有一个操做命令,默认是 pick ,表示该行被选中,须要进行 rebase 操做。下面一堆注释的指引中还有几个指令,咱们经常使用到的是如下 2 个it
git checkout master git merge dev
这样就作到你一个commit提交到了主分支达到要求ast