让我们说如果我有2个分支机构
top
和master
如果我在功能分支上,并运行git rebase master
它是否会为主分支或rebase主题分支?
做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。当rebase退出时,主题仍将是签出分支。
如果我想实现这个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
答案 0 :(得分:2)
假设您从一棵看起来像这样的树开始
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
我可以结帐主人并运行 git rebase主题 ??
运行该命令将导致树看起来像这样
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,FG放入临时区域。 / p>