Arj*_*jen 270 git git-rebase feature-branch
我有两个(私人)功能分支,我正在努力.
a -- b -- c <-- Master
\ \
\ d -- e <-- Branch1
\
f -- g <-- Branch2
Run Code Online (Sandbox Code Playgroud)
在这些分支上工作一段时间后,我发现我需要Branch1中Branch2的更改.我想将Branch2中的更改重新绑定到Branch1上.我想最终得到以下结论:
a -- b -- c <-- Master
\
d -- e -- f -- g <-- Branch1
Run Code Online (Sandbox Code Playgroud)
我很确定我需要将第二个分支重新绑定到第一个分支,但我不完全确定正确的语法以及我应该检查哪个分支.
这个命令会产生预期的结果吗?
(Branch1)$ git rebase --onto Branch1 Branch2
Run Code Online (Sandbox Code Playgroud)
sas*_*ikt 315
切换到Branch2
git checkout Branch2
Run Code Online (Sandbox Code Playgroud)在Branch1更改之上应用当前(Branch2)更改,保留在Branch2中:
git rebase Branch1
Run Code Online (Sandbox Code Playgroud)哪个会在Branch2中留下您想要的结果:
a -- b -- c <-- Master
\
d -- e <-- Branch1
\
d -- e -- f' -- g' <-- Branch2
Run Code Online (Sandbox Code Playgroud)
您可以删除Branch1.
Von*_*onC 53
注意:如果你在Branch1,你将使用Git 2.0(2014年第二季度)能够输入:
git checkout Branch2
git rebase -
Run Code Online (Sandbox Code Playgroud)
见提交4f40740由布莱恩Gesiakmodocache:
rebase:允许" -"为前一个分支的简写教导rebase使用相同的简写,
checkout并将merge分支命名rebase为当前分支; 也就是说,"-"表示"我们之前所在的分支".
Asf*_*azi 24
该解决方案应该完全按照要求执行(将 Branch2 的提交添加到 Branch1 之上,同时保留在 Branch1 上):
git checkout Branch1
git cherry-pick master..Branch2
Run Code Online (Sandbox Code Playgroud)
你最终会得到这个。
a -- b -- c <-- Master
\
d -- e -- f' -- g' <-- Branch1 (current)
\
f -- g <-- Branch2
Run Code Online (Sandbox Code Playgroud)
这将按照顺序挑选 Branch2 上的每个提交到 Branch1。然后就可以删除Branch2了。
我是否误解了这个问题?我的直觉是像这样使用rebase's标志:--onto
git rebase --onto branch1 master branch2
Run Code Online (Sandbox Code Playgroud)
变基前:
* 6263580 (HEAD -> branch2) add g
* c802c88 add f
| * c80cfb0 (branch1) add e
| * aea5708 add d
| * 2e522fe (master) add c
|/
* 0613527 add b
* e2a0c4d add a
Run Code Online (Sandbox Code Playgroud)
变基后:
* 7f6a363 (HEAD -> branch2) add g
* 4cbab60 add f
* c80cfb0 (branch1) add e
* aea5708 add d
* 2e522fe (master) add c
* 0613527 add b
* e2a0c4d add a
Run Code Online (Sandbox Code Playgroud)
这使得它变得明确并且清楚哪些提交集正在重新基于什么
我知道你要求 Rebase,但我会选择我想从 Branch2 移动到 Branch1 的提交。这样,我就不需要关心什么时候从 master 创建了哪个分支,而且我可以更好地控制合并。
a -- b -- c <-- Master
\ \
\ d -- e -- f -- g <-- Branch1 (Cherry-Pick f & g)
\
f -- g <-- Branch2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
163205 次 |
| 最近记录: |