我最开始基于它的commit-001进行开发了分支(new-br),然后现在想要合并的时候,这个最新的版本是commit-002了,请问如何进行rebase呢?

有一个repo,我最开始基于它的commit-001进行开发了分支(new-br),然后现在想要合并的时候,这个最新的版本是commit-002了,
请问我是需要rebase是吗?我需要如何做才能到达我的目的呢?

阅读 3.1k
2 个回答

这个时候应该用git merge 操作。上面你说到了合并时候是版本commit-002,说明其他人也在这这个分支进行了提交操作,这时候你用git rebase 是会影响到其他人的代码。

  1. 先说你采用git rebase操作会产生什么后果:
    假设同事A从c1这个commit基础上提交了两个commit,c3和c4。而这个时候同事B在原来c1基础上提交了c2,同时本地本地有个c5还没有推到远程仓库。若这个时候同事A直接进行rebase 操作,会发生同事B本地版本库和远程版本库不同步的情况,有可能会导致同事B的本地commit c2丢失。如下图所示:
    image.png
  2. 如果采用git merge操作可能在提交记录上会出现merge记录,并手动更新一些代码,但是不会出现丢失其他人代码的情况,如下图所示:

image.png
同事B如果再同步远程仓库的话,只需要要做合并操作即可,而不会出现和远程仓库无法同步的现象了

git rebase <目标分支>。把当前分支的提交应用到目标分支上,形成一个多个分支的提交线性排列,让你看起来就像是一个分支上操作的,非常清晰明了。

具体操作很简单:

git checkout new-br 切换到当前分支

git rebase <目标分支 >

目标分支:你想要将你在new-br分支做的修改(commit-002)合并到哪个分支去

如果合并有冲突的话,可以撤销

git rebase --abort

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题