所以,我显然没有正确使用这些命令,但是我很难弄清楚我需要输入哪个命令来实现我想做的事情:
考虑一个sprint分支,我们称之为Team_Sprint_5
。在sprint的第1天,我创建了一个新分支来处理我的问题:Issue-1234-branch
。到现在为止还挺好。我的分支有Team_Sprint_5
分支的基础:
在分支创建中提交历史记录:
5825d <-- Team_Sprint_5 & feature branch head
3fc55 older commit
a3911 even older commit
所以,我做了一个提交。现在我的分支看起来像这样:
2c442 <-- My commit
5825d <-- Issue-1234-branch Base
3fc55
a3911
与此同时,主要的sprint分支已经更新。 我想将我的分支移到当前sprint分支的顶端:
(2c442) <-- I want my commit to move here
b6740 <-- updated Team_Sprint_5 head
a77fb
... <-- several additional commits in the main branch
[2c442] <-- where my commit ends up instead
5825d <-- Where we originally started
所以,从我目前的分支,我使用git rebase --onto b6740
。但是,这似乎粉碎了我在我的分支中提交的初始分支创建之间的所有提交,这不是我想要的。 做我需要的适当命令是什么?
修改
我最终做的是,因为我把我的分支搞砸了我的简单修复能力,就是从当前sprint分支的尖端创建一个新的分支,然后使用cherry-pick
命令选择我的提交。我不得不相信这可以通过原始分支上的简单rebase来完成。
答案 0 :(得分:1)
我想你是从这里开始的,比如
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
然后* b6740 (Team_5_Sprint)
* a77fb
|
* * 2c442 (Issue-1234-branch)
|/
* 5825d
* 3fc55
* a3911
(不需要git rebase Team_5_Sprint Issue-1234-branch
)就会产生
--onto
(对于一些新的提交* vwxyz (Issue-1234-branch) # "Copy" of 2c442
* b6740 (Team_5_Sprint)
* a77fb
| * 2c442
|/
* 5825d
* 3fc55
* a3911
;您的原始提交vwxyz
现在是一个有资格进行垃圾回收的悬空提交,但仍可通过reflog进行检索。)。
在2c442
创建vwxyz
之前,您可能需要解决一些合并冲突。
以下是2c442
:
--onto
的示例
git help rebase
使用 o---o---o---o---o master
\
o---o---o---o---o next
\
o---o---o topic
,我们会在git rebase --onto master next topic
之上移动next
和topic
之间的提交:
master
没有 o---o---o---o---o master
| \
| o'--o'--o' topic
\
o---o---o---o---o next
,使用--onto
,您最终会复制
git rebase master topic
之上的所有next
(next
和topic
共享master
之后的相同分支点):
master
( o---o---o---o---o master
\ \
\ o'--o'--o'--o'--o'--o'--o'--o' topic
\
o---o---o---o---o next
之后的前5次提交是master
的“相同”提交。)