在已经分支的分支上进行 master rebase 后的问题

Issue after master rebase on a branch that was already branched

顺序:

 - git checkout master
 - git pull
 - git checkout -b 'b1'
 - git commit...
 - git push
 - git checkout -b 'b2'
 - git commit...
 - git checkout b1
 - git rebase -i master
 - (Pull request and merge on gitlab)
 - git checkout b2
 - git rebase -i master

结果:

* (HEAD->B2 + origin/B2)
* b2 commit
* b2 commit
* 1bis b1 commit
* 2bis b1 commit
* * (origin/HEAD origin/master) - Merge B1 into master
| |\
|/ /
| * 1 b1 commit
| * 2 b1 commit
|/
*
|

我如何change/move B2 分支到 master Head 并删除重复提交?

你不应该将 master 变基到任何东西上(也许 origin/master 除外,无论如何它应该只是一个快速向前的合并),你应该将功能分支变基到 master 上。

由于 b2 基于 b1,您需要将 b1 变基到 master,然后再将 b2 变基到 b1

  • git checkout b1
  • get rebase -i master
  • git checkout b2
  • git rebase -i b1
  • 删除 b2 中的重复提交

将 master 分支变基到 B2 分支将不适用于此处。我建议只 cherry-pick 你从 B2 分支到 master

的更改
  1. 您需要撤消对 B2 分支所做的所有操作。
  2. 在将 B1 与 master 合并的状态下还原 master

然后

git checkout master

git cherry-pick {commin-hash(s) of new changes from B2 branch}