场景:代码仓库前期管理不完善,导致commit logs重复、杂乱。
- 思路一:git rebase --soft
// 查看git log
git log --oneline
...
abaa Merge Remote ...
abbb Merge Remote ...
abcc [ADD] 登录接口去掉验证码
abdd [ADD] 登录接口去掉验证码
efgh [ADD] 增加日志
现要将efgh后的abaa...abdd四个commit合并为一个。
// 从该4次commit的前一次commit efgh开始
git reset --soft efgh
// 查看git状态
git status
// 再走一遍git的add、commit、push流程
git add .
git commit -m "[UPDATE]登录接口移除验证码"
git push -f
commit记录合并完成。
话说回来,该方法有个痛点:仅能从当前分支的最新commit记录往前操作。即:master分支按提交时间从新到旧,有a、b、c、d、e五个提交,git reset --soft操作必须包含最新的a提交,可合并ab、abc,无法绕过a合并bc、cd。
话又说回来,如果非要绕过a合并其他提交记录,办法也是有的,就是git rebase -i,但该方法稍微复杂一点。
- 思路二: git rebase -i
改天再写