Sla*_*ion 2 git branch git-rebase
我有一个由功能分支A组成的功能分支B。我想将分支B重新设置回主服务器,而无需分支A的提交。
我的存储库如下所示:
c1---c2---c3 master
\
c4---c5---c6 A
\
c7---c8---c9 B
Run Code Online (Sandbox Code Playgroud)
我想要的是:
c7---c8---c9 B
/
c1---c2---c3 master
\
c4---c5---c6 A
Run Code Online (Sandbox Code Playgroud)
我尝试从分支B迁移到主服务器。那什么也没做,将分支B保留在分支A上。
它可以追踪从后B到master,所以就Git是有关部门B已经是“上” master。换句话说,B“包含” master。
尝试明确说明要重新建立基础的分支以及上游:
git rebase --onto master A B
Run Code Online (Sandbox Code Playgroud)
一个 3 行精选解决方案,不如 Chris 的出色答案简洁,但对某些人来说可能更清晰,可以这样:
git branch backup-B B
git checkout -B B master
git cherry-pick A..backup-B
Run Code Online (Sandbox Code Playgroud)
步骤说明:
1)做好备份(也为后面的cherry pick做参考)
git branch backup-B B
Run Code Online (Sandbox Code Playgroud)
c1---c2---c3 <<< master
\
c4---c5---c6 <<< A
\
c7---c8---c9 <<< backup-B, B <<< HEAD
Run Code Online (Sandbox Code Playgroud)
2)master处的B点(同时查看)
git checkout -B B master
Run Code Online (Sandbox Code Playgroud)
c1---c2---c3 <<< master, B <<< HEAD
\
c4---c5---c6 <<< A
\
c7---c8---c9 <<< backup-B
Run Code Online (Sandbox Code Playgroud)
3)“复制”缺少的提交(无法从 A 访问,但可以从“旧”B 访问,此处c7, c8, c9)
git cherry-pick A..backup-B
Run Code Online (Sandbox Code Playgroud)
c7'---c8'---c9' <<< B <<< HEAD
/
c1---c2---c3 <<< master
\
c4---c5---c6 <<< A
\
c7---c8---c9 <<< backup-B
Run Code Online (Sandbox Code Playgroud)
(当然,此时,尽管没有必要,您也可以删除备份来git branch -D backup-B获得您想要的确切结果。但是,这样的救生衣对 gititanic 来说是一个轻的负担;-)
| 归档时间: |
|
| 查看次数: |
206 次 |
| 最近记录: |