git rebase使用
场景:
我们会发现,有时在临时分支开发某个功能需求,会有大量的bug fix提交,然而合并到主分支最终的影响代码并不多,这时候的merge操作,会形成大量没什么用的log。
因此,合理的做法是merge前,将我们的临时分支提交做一次合并(前提,这个分支只有你一个人使用,或者保证这些提交都是可接受合并的)
操作:
例如,我们在tmp_bugfix_xxx提交了大量请求
git checkout tmp_bugfix_xxx
#例如有以下提交,每个提交修改了x.txt
a1eedca4dffc0de291584a4d062bc1e9088e803f (HEAD -> tmp_bugfix_xxx) 修改,9
91b1b205cbef5aa86443cd1d730dc9d428293856 修改,8
3f877dd7b3c72584cdf1db7208397bccf57b2855 修改,7
c4d6d378117ea457aa0cde81e8dec2791bfaa90d 修改,6
8392f5bbc859120c83db0e1500866c9e2b4af7f7 修改,5
a54e6b877b62950beab19663eb0c1e16c4b8e5a5 修改,4
e017deb68c9c03d503c7e8add6266baa3d88105c 修改,3
0fbbb46325210aa9d1d58454071db84fb38bcabb 修改,2
5177b9fce9143338666df4f80eb99f11b677fac3 修改,1
#选择一个commit log作为最终log,其他的都选为fixup(抛弃日志),或者squash(保留log)
git rebase -i feature_xxx
pick 5177b9f 修改,1 fixup 0fbbb46 修改,2 fixup e017deb 修改,3 fixup a54e6b8 修改,4 fixup 8392f5b 修改,5 fixup c4d6d37 修改,6 fixup 3f877dd 修改,7 fixup 91b1b20 修改,8 fixup a1eedca 修改,9
#进行安全强推,更新远端(tmp_bugfix_xxx保证只有自己在用,否则其他人的提交会丢失)
git push --force-with-lease origin tmp_bugfix_xxx
#合并到feature_xxx
git checkout feature_xxx
git merge tmp_bugfix_xx
# 查看日志,可以看到,9次提交都合并到一起
commit f76df0538e6129bbefeefd42ea49890bd8522722 (HEAD -> feature_xxx, origin/tmp_bugfix_xxx, tmp_bugfix_xxx)
修改,1
1.txt | 1 +
2.txt | 1 +
3.txt | 1 +
4.txt | 1 +
5.txt | 1 +
6.txt | 1 +
7.txt | 1 +
8.txt | 1 +
9.txt | 1 +
9 files changed, 9 insertions(+)