美文网首页GXiOS
git rebase用法详解

git rebase用法详解

作者: Josephx | 来源:发表于2019-08-10 06:17 被阅读0次

1. 利用git base来合并多次commit

git rebase -i HEAD~2        //合并最近俩次的commit
我是缩小后并居中的图.jpg
  • pick 的意思是要会执行这个 commit
  • squash 的意思是这个 commit 会被合并到前一个commit
  • drop 代表合并提交中排除这个提交
git rebase --abort

2. 分支的操作

2.1.我们先从 master 分支切出一个 dev 分支,进行开发:

git:(master) git checkout -b feature1
这一次彻底搞懂 Git Rebase.jpg

)

2.2.这时候,你的同事完成了一次 hotfix ,并合并入了 master 分支,此时 master 已经领先于你的 feature1 分支了:

这一次彻底搞懂 Git Rebase.jpg

2.3.恰巧,我们想要同步 master 分支的改动,首先想到了 merge ,执行:

git:(feature1) git merge master
这一次彻底搞懂git2-5343555.jpg

图中绿色的点就是我们合并之后的结果,执行:

git:(feature1) git log

就会在记录里发现一些 merge 的信息,但是我们觉得这样污染了 commit 记录,想要保持一份干净的 commit ,怎么办呢?这时候, git rebase 就派上用场了。

2.4.让我们来试试 git rebase ,先回退到同事 hotfix 后合并 master 的步骤:

2.5.使用 rebase 后来看看结果:

git:(feature1) git rebase master

这里补充一点: rebase 做了什么操作呢?

首先, git 会把 feature1 分支里面的每个 commit 取消掉;

其次,把上面的操作临时保存成 patch 文件,存在 .git/rebase 目录下;

然后,把 feature1 分支更新到最新的 master 分支;

最后,把上面保存的 patch 文件应用到 feature1 分支上;

这一次彻底搞懂git3.jpg

commit 记录我们可以看出来, feature1 分支是基于 hotfix 合并后的 master ,自然而然的成为了最领先的分支,而且没有 mergecommit 记录,是不是感觉很舒服了。

相关文章

  • 2020-06-18

    GCD 源码 Git - rebase 用法小结 ReactNative源码解析——通信机制详解(1/2) Rea...

  • git rebase详解

    参考Git分支Rebase详解。

  • git rebase用法详解

    1. 利用git base来合并多次commit pick 的意思是要会执行这个 commit squash 的意...

  • 3.git高级篇总结

    阅读 Git 原理详解及实用指南 记录 高级 1:不喜欢merge的分叉,用rebase吧 介绍的是 rebase...

  • git rebase 用法

    git rebase Git rebase 与 Git merge 的区别 如果经常多人协作开发的话,可能都很熟悉...

  • git rebase详解

    git rebase是什么? 什么是变基?将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。 ...

  • git8~rebase

    2019.06.25 git rebase git stash git pull --rebase git sta...

  • git命令 cherry-pick 的使用简介

    上一篇文章介绍了merge和rebase的用法以及原理。git命令merge和rebase的简单应用 这里简单的介...

  • 【Git】rebase 用法小结

    本文主要参考https://git-scm.com/docs/git-rebase rebase在git中是一个非...

  • git rebase --onto用法

    例子:合并一段commits 1. 把feature_client的C5 - C6 -C7合并到master gi...

网友评论

    本文标题:git rebase用法详解

    本文链接:https://www.haomeiwen.com/subject/myrkjctx.html