git学习六(git merge --squash)

feature(分支)合并到master(主干),并推送到服务器上,正常的命令序列为:

git checkout master
git merge feature
# 在这里处理冲突
git commit
git push

这个时候我们向服务器推送的是一个Merge结点,它有两个父结点,同时保留了分支和主干的历史。

但有时,没有权限向服务器推送Merge结点,或者没有必要把分支的历史保留得太细。这时可以新开一个分支做合并,然后把整个分支压缩(squash)为主干上的一个提交:

git checkout master -b work
git merge feature
# 在这里处理冲突
git commit
# 以下压缩为一个提交再推送到服务器
git checkout master
git merge work --squash --ff-only
git commit
git push
# 擦屁股
git branch -d work

也可以在第一次合并时直接使用--squash参数,但这样生成的commit message会少一次合并的信息:

git checkout master
git merge feature --squash
# 在这里处理冲突
git commit
git push

另外,用这种方法合并后,本地和服务器的分支都最好删除掉:

git branch -D feature
git push origin :feature
 
git merge 是会把被merge的commit合并到当前的commit中,不需要当前分支针对这次merge再次commit
git merge --squash 不会把被merge的commit合并到当前commit中,需要当前分支重新commit一次才会尽git仓库
 
 
转载地址: http://www.jiangyouxin.net/2013/03/07/git_merge_squash.html
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值