美文网首页
Rebase code

Rebase code

作者: 醉看红尘这场梦 | 来源:发表于2020-03-17 09:25 被阅读0次

实际上,为了合并不同分支的代码,git merge并不是唯一的方法。git rebase同样可以达到合并的目的。那么,这两个命令的差别是什么呢?用文字描述可能会比较复杂,我们直接来看例子。

合并分支的过程

为了演示这个过程,我们新建一个空目录merge-code,然后依次完成下面的动作:

  • 首先,创建个文件a@master.txt;
  • 其次,提交到master:
git add .
git commit -m "Add a@master.txt"

这时,执行git log就会看到这样的结果:

image

或者,我们也可以执行git log --oneline查看提交信息摘要:

image
  • 第三,新建并切换到一个新分支feature:git checkout -b feature
  • 第四,切换回master,新建一个文件b@master.txt并提交:
git checkout master
touch b@master.txt
git add .
git commit -m "Add b@master.txt"

  • 第五,切换到feature分支,在这里,我们新建一个d@feature.txt:
git checkout feature
touch d@feature.txt
git add .
git commit -m "Add d@feature.txt"

  • 第六,再创建并提交一个e@feature.txt:
git checkout feature
touch e@feature.txt
git add .
git commit -m "Add e@feature.txt"

  • 第七,切换回master,这时merge-code目录中,应该还没有刚才创建的c@feature.txt和d@feature.txt,
image
  • 第八,我们执行git merge feature把feature分支合并进来;
image
  • 第九,执行git log --oneline --graph就会看到这样的结果:
image

其中,红色的线条表示master分支,绿色的线条表示feature分支。分支上的*表示我们完成的动作。这样我们上面的整个过程就看的很清楚了。

但有时,我们创建分支仅仅是为了不影响master,并没有必要在master的提交记录上看到这个创建分支的过程,因为分支的创建有可能会很频繁。这时,我们就可以使用git rebase命令。

通过rebase简化提交记录

为了了解rebase的用法,在master分支,我们先执行git reset --hard 12beaa3恢复到创建b@master.txt。然后,切换到feature分支。此时,master分支上有a@master.txt和b@master.txt,而feature分支上有d@feature.txt和e@feature.txt。

接下来,为了把feature分支上的提交记录合并到master,让这些行为看上去就像是在master分支上发生的,我们可以先在feature分支执行git rebase master,就会看到这样的结果:

image

图中,replay your work on top of it中的it,指的就是rebase后面的master。git会把我们在当前分支上的操作,“重放”到master当前的最新一次提交之后。对于我们的例子来说,也就是创建了b@master.txt之后。

现在,回到master分支,当我们再把feature合并进来之后,执行git log --oneline --graph,就会看到master上的提交日志就变成了这样:

image

也就是说,我们在这两个分支上进行的操作,从提交日志上已经看不出来了。master上的提交记录完全变成了一个序列化执行的日志。

相关文章

  • Rebase code

    实际上,为了合并不同分支的代码,git merge并不是唯一的方法。git rebase同样可以达到合并的目的。那...

  • 三、git merge与rebase区别

    merge与 rebase 都是作为合并分支 a. rebase:多一步rebase;b.rebase:不能有代...

  • Git~rebase

    git rebase rebase简介 rebase, 意思为变基,即改变分支的的根支。提到rebase就不得不说...

  • git整体学习

    基础 1. git ... 3. git rebase 第二种合并分支的方法是 git rebase。Rebase...

  • git8~rebase

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

  • Git错误信息解决记录

    Git error: previous rebase directory .git/rebase-apply st...

  • git rebase和merge区别

    merge和rebase 标题上的两个命令:merge和rebase都是用来合并分支的。 这里不解释rebase命...

  • Git 批量合并Commit或commit信息

    git rebase -i HEAD~3 git rebase -i [commitId-a] [commitId...

  • 如何正确rebase

    git rebase -i origin/分支 合并冲突 git status git rebase --cont...

  • Git使用教程

    拉取代码的正确步骤 git fetch git rebase git rebase --continue(遇到冲突...

网友评论

      本文标题:Rebase code

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