赞
踩
有个 JAVA
的 SEO
项目,由于种种原因前前后后拖了三个月,下周一上线,于是打算合到 master
上。可当合并时才记起,我都在 test_branch
分支上开发了,一开始从主分支派生的分支没用到,同时由于历史原因,这个测试分支和主分支不同步,不能直接合并。
出现问题了,就得解决问题。于是我就祭出了之前看的 rebase
合并多个 commit
的技巧,具体是这样的,先查看这期需求开始到现在工提交了多少个 commit
。
$ git log --oneline --since "3 months ago" | wc -l
36
共 36
个,于是开始了我的表演, rebase
前 36
提交,合并成一个
git rebase -i HEAD~36
把 pick
改为 s
,也就是 squash
的缩写,意思是 git 会应用这个补丁,但会与之前的提交合并
,
:%s/^pick/s/g
同时保留最上面的 pick
,意思是 git 会应用这个补丁,以同样的提交信息(commit message)保存提交
,然后 wq
保存,Rebasing
后会弹出个窗口,修改下提交,不过太长了,我懒得修改了,因为这些提交说明就是这次需求的点,继续 wq
保存。
到这里就成功的把 36
个合成了 1
个 commit
,把分支切到 master
上,然后 git cherry-pick
那个 commit-id
即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。