我的设置如下:
- A - B - C - ... - D - E <- copy-of-master
\
F - ... - G - H <- dev
\
I - J <- bugfix
我想将提交I和J移到copy-of-master
上,这只是upstream1/master
的副本。
但是命令git rebase --onto copy-of-master dev bugfix
什么都不做。当我打开拉取请求时,它表示bugfix
和upstream1/master
相同。
此外,在运行rebase后,当我git checkout dev
时它告诉我:
您的分支机构和&#39; upstream2 / dev&#39;有分歧, 并分别有1814和1799个不同的提交
这只是建议dev
以某种方式移动到copy-of-master
,因为upstream1/master
和upstream2/dev
大致相当于2000次提交。
答案 0 :(得分:1)
我想将提交I和J移动到copy-of-master,这只是upstream1 / master的副本。
为什么不简单地使用git cherry-pick I J
?
git checkout copy-of-master
git cherry-pick I J
git cherry-pick <SHA-1> <SHA-1> <SHA-1> ...
在master分支的顶端应用commit提交的更改,并使用此更改创建一个新的提交。
您还可以指定樱桃选择
的范围git cherry-pick <SHA-1>...<SHA-1>
答案 1 :(得分:1)
但是命令
git rebase --onto copy-of-master dev bugfix
什么都不做
预期:
copy-of-master dev bugfix
上的git rebase将在dev
之后移动所有提交,最多为bugfix
。
在你的图表中, dev
(H
)之后没有提交。
- A - B - C - ... - D - E <- copy-of-master
\
F - ... - G - H <- dev
\
I - J <- bugfix
G
(即dev~1
,dev
之前的一次提交)但是可以正常工作:所有提交 G
之后提交到{{ {1}}代表bugfix
提交。
bugfix
这可行,假设git rebase --onto copy-of-master dev~1 bugfix
(或dev~1
)是从G
分叉bugfix
分支的提交。