假设我有以下场景:
o (master)
/ o--o (WIP1)
/ /
o--o--o--o--o--o (WIP2)
(X) \
o--o (WIP3)
Run Code Online (Sandbox Code Playgroud)
是否有一个git命令创建一个新的分支,以便它包含分支X后的子树?我想执行"大规模的反思",我希望三个WIP分支在主人身上重新定位.
我知道我可以用一些Bash脚本来做到这一点,但我想知道如何使用git命令.
Chr*_*ial 12
没有单一的git命令.你将不得不做一些手工工作.在你的情况下:
o (master)
/ o--o (WIP1)
/ /
X--o--o--B--o--o (WIP2)
\
o--o (WIP3)
Run Code Online (Sandbox Code Playgroud)
您首先将WIP1转换为master:
git rebase --onto master X WIP1
Run Code Online (Sandbox Code Playgroud)
这会导致:
o--o (WIP1)
(master) /
o--o--o--B’
/
/
X--o--o--B--o--o (WIP2)
\
o--o (WIP3)
Run Code Online (Sandbox Code Playgroud)
如果你现在运行git rebase --onto master X WIP2,你会得到这样的结构:
o--o (WIP1)
(master) /
o--o--o--B’
/ \
/ o--o--B’’--o--o (WIP2)
/
X--o--o--B--o--o (WIP3)
Run Code Online (Sandbox Code Playgroud)
这可能不是你想要的,所以现在你应该改变WIP2和WIP3 B’:
git rebase --onto B’ B WIP2
git rebase --onto B’ B WIP3
Run Code Online (Sandbox Code Playgroud)
这会导致:
o--o (WIP1)
(master) /
o--X--o--o--B’--o--o (WIP2)
\
o--o (WIP3)
Run Code Online (Sandbox Code Playgroud)
o (master)
/ o--o (WIP1)
/ /
o--p--p--o--o--o (WIP2)
(X) (Y)
\
o--o (WIP3)
Run Code Online (Sandbox Code Playgroud)
这应该是一个rebase --onto(您可以在“(您可以在“如何将某些提交移动到 git 中的另一个分支? ”
git rebase --onto master X WIP1
git rebase --onto master X WIP2
git rebase --onto master X WIP3
Run Code Online (Sandbox Code Playgroud)
p'--p'--o--o (WIP2)
/
o-----o-----p--p--o--o--o (WIP1)
(X) (master) (Y')
\
p''--p''--o--o (WIP3)
Run Code Online (Sandbox Code Playgroud)
所以第一次rebase是可以的,但是你需要得到Y SHA,并且:
git rebase --onto Y' Y WIP2
git rebase --onto Y' Y WIP3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2396 次 |
| 最近记录: |