假设我有2个分支topic
和master
如果我在topic
分支上,并运行git rebase master
,它会重新设置母版还是重新设置主题分支?
[git rebase --help
做给我这个
假设存在以下历史记录,并且当前分支为“主题”:
A---B---C topic
/
D---E---F---G master
至此,以下任一命令的结果:
git rebase master
git rebase master topic
将是:
A'--B'--C' topic
/
D---E---F---G master
注意:后一种形式只是git checkout主题的缩写,后跟git rebase master。重新设置基准退出时,主题将保留为已签出分支。
如果我要实现此D---E---F---G---A---B---C master
,是否应该切换到主服务器并运行git rebase -i topic
?
如果我运行git rebase -i topic
,尝试将A,B,C压榨成C成为D---E---F---G---C master
,我得到noop
假设您从一棵看起来像这样的树开始
A---B---C topic
/
D---E---F---G master
您将需要运行2个命令git rebase master
,使其看起来像这样
A'--B'--C' topic
/
D---E---F---G master
然后从master
运行git merge topic
,这将进行快速前向合并,您将得到一棵看起来像这样的树
topic
/
D---E---F---G---A---B---C -- master
我可以只签出master并运行git rebase topic ??] >>
运行该命令将生成一棵看起来像这样的树
topic / D---A---B---C---E---F---G -- master
这是
rebase
的(经过一些编辑)git文档,希望这会有所帮助:
由当前分支中的所有提交所做的更改但不属于上游
的所有更改都保存到一个临时区域。如果您在
topic
上并运行git rebase master
,则意味着提交A,B和C正在进入临时区域。
当前分支重置为上游
。与git reset --hard upstream。具有完全相同的效果。此时树的临时状态看起来像这样
topic / D---E---F---G -- master
然后将先前保存到临时区域中的提交依次重新应用于当前分支。
已保存到临时区域中的A,B,C提交将“重新提交”到您当前在topic
上的分支。
topic / D---E---F---G---A---B---C -- master
从
git rebase topic
运行master
将执行完全相同的步骤,除了不是将提交A,B,C放入临时区域,而是将提交E,F G放入临时区域。