在已经分支的分支上进行 master rebase 后的问题
Issue after master rebase on a branch that was already branched
顺序:
- 我从 master 创建了 B1 并做了一些事情。
- 然后我打开了一个拉取请求并从 B1 创建了 B2 并做了一些事情。
- 拉取请求已验证,因此我将 master 重新设置为 B1 并将 B1 合并到 master。
- 然后我回到没有rebase结果的B2。即使我在 B2 上 rebase master,B1 提交仍然在这里,重复。
或
- 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
的更改
- 您需要撤消对 B2 分支所做的所有操作。
- 在将 B1 与 master 合并的状态下还原 master
然后
git checkout master
git cherry-pick {commin-hash(s) of new changes from B2 branch}
顺序:
- 我从 master 创建了 B1 并做了一些事情。
- 然后我打开了一个拉取请求并从 B1 创建了 B2 并做了一些事情。
- 拉取请求已验证,因此我将 master 重新设置为 B1 并将 B1 合并到 master。
- 然后我回到没有rebase结果的B2。即使我在 B2 上 rebase master,B1 提交仍然在这里,重复。
或
- 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
- 您需要撤消对 B2 分支所做的所有操作。
- 在将 B1 与 master 合并的状态下还原 master
然后
git checkout master
git cherry-pick {commin-hash(s) of new changes from B2 branch}