参考文献这个优秀的答案 https://stackoverflow.com/a/38430972/3398271,我读过并且(我认为)我理解了,但据我所知并没有回答我的具体问题(因为它解释了如何重新基于提交中的提交)不同的分支,但我想在同一个分支上重新建立基础)。
情况
- 有两个分行,
master
and feature
, feature
在某些时候会重新基于master
- 稍后,无论出于什么原因*我们想要
feature
从之前的提交之一“分支出来”master
(* EDIT:原因,例如:当地的变化feature
分支断裂后,将其重新定位到master
,所以尝试找出,哪个提交master
打破了feature
分支,以类似的方式git-bisect
)
问题:如何实现这一目标?
插图
如何从这里开始:
G--H--I--J <-- feature
/
A--B--C--D--E--F <-- master
……到这个?
G--H--I--J <-- feature
/
A--B--C--D--E--F <-- master
迄今为止的尝试
尝试#1:
git checkout feature
git rebase C
Result: Current branch bug/8985-miniredis is up to date.
没有改变。
我认为这个结果是非常合乎逻辑的,因为对于 git 来说,C
也是“当前分支”的一部分。 (尽管,从我的角度来看,“当前分支”只是G..J
)
尝试#2:
git checkout feature
git rebase --onto C feature
Result: First, rewinding head to replay your work on top of it...
。进而feature
只是简单地指向C
而其他提交则“丢失”。我真的不明白这里发生了什么,但同样,git 不知道feature
“开始于F
, 从我的观点。
尝试#3:
git checkout feature
git rebase --onto C master..feature
Result: fatal: invalid upstream 'master..feature'
如中所述comments https://stackoverflow.com/questions/38427050/how-to-change-the-starting-point-of-a-branch#comment64301034_38430972对于这个答案,这是不可能的,因为git
插入..HEAD
本身的一部分。但肯定有某种方法可以实现这一目标吗?
换句话说,问题是:
如何实现什么git rebase --onto C master..feature
如果有效的话会怎样?