我有这个:
master
| foo
| |
v v bar
A---B---C---D |
\ v
\---E---F---G
我想要这个:
master
| foo
| |
v v bar
A---B---C---D |
\ v
\---E---F---G
所以我我认为我需要做:
git checkout bar
git rebase master
但是Git认为不是:
Current branch bar is up-to-date.
并保留一切。
我需要运行什么才能使Git做到我想要的?
答案 0 :(得分:2)
提交D
包含在分支bar
中。一种选择是执行interactive rebase并从分支D
删除提交bar
。
git checkout bar
git rebase -i master
D
的行只要您在提交D
(或包含提交D
)(例如foo
)上具有标签或分支,就不要丢失它。还请记住,如果D
之后的提交取决于D
中的更改,则会产生冲突。
答案 1 :(得分:2)
您正在执行的git rebase
版本,将分支bar
上尚未提交的所有提交master
写入master
中。这是D
到F
的提交,这不是您想要的,因为它不会跳过提交D
。一种解决方案是使用--onto
标志:
git checkout bar
git rebase --onto master foo
此版本的rebase将在分支bar
上而不是在分支foo
上接受所有提交,并将它们重写到master
上。这将精确地生成您想要的bar
的历史记录。