git rebase使用

Posted naiyou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(+)

以上是关于git rebase使用的主要内容,如果未能解决你的问题,请参考以下文章

git rebase详解

git rebase -i 合并多次提交

Git之变基方式Rebase的使用

你真的懂git rebase吗?

git merge 及 git rebase的区别

git commit提交rebase合并以及patch补丁的使用