具有多个子分支的git rebase
在中等复杂的分支场景中,我很难让git做我想做的事情。每当我使用rebase命令时,似乎我的一些工作都丢失了。我是git的新手,来自Perforce的背景。我是否使用了错误的命令或缺少一些标志?我对本地存储库内部状态的直觉正确吗 注:branchB依赖于branchA,branchC依赖于branchB具有多个子分支的git rebase,git,version-control,merge,branch,rebase,Git,Version Control,Merge,Branch,Rebase,在中等复杂的分支场景中,我很难让git做我想做的事情。每当我使用rebase命令时,似乎我的一些工作都丢失了。我是git的新手,来自Perforce的背景。我是否使用了错误的命令或缺少一些标志?我对本地存储库内部状态的直觉正确吗 注:branchB依赖于branchA,branchC依赖于branchB git签出主机 git牵引主控器 git签出-b branchA ==O master \==A branchA 1 origin/master, master, HEAD ->
==O master
\==A branchA
1 origin/master, master, HEAD -> branchA
|
0
==O==O master
\==A branchA
\==B branchB
2 branchA, HEAD -> branchB
|
1 origin/master, master
|
0
HEAD
是您当前的位置
您可以通过在每一步启动git log--graph--oneline--all--decoration
来查看提交图的演变
1 origin/master, HEAD -> master
|
0
5 branchC
|
4 branchB
|
3
|
| 2' branchA
| |
2 |
|/
1 origin/master, HEAD -> master
|
0
5 branchC
|
4 branchB
|
3
|
| 2'' branchA
| |
2 |
| |
| 6 origin/master, HEAD -> master
| |
| /
| /
|/
1
|
0
1 origin/master, HEAD -> master
|
0
5 branchC
|
4 branchB
|
3
|
| 2' branchA
| |
2 |
| |
| | 6 origin/master, HEAD -> master
| | |
|/ /
| /
|/
2
|
0
==O master
\==A branchA
1 origin/master, master, HEAD -> branchA
|
0
2 HEAD -> branchA
|
1 origin/master, master
|
0
3 branchB
|
| 2' HEAD -> branchA
| |
2 |
|/
1 origin/master, master
|
0
4 HEAD -> branchB
|
3
|
| 2' branchA
| |
2 |
|/
1 origin/master, master
|
0
5' branchC
|
4' branchB
|
| 7 HEAD -> refactorA
| |
3' |
| /
2'' branchA, master
|
6 origin/master
|
1
|
0
==O==O master
\==A branchA
\==B branchB
2 branchA, HEAD -> branchB
|
1 origin/master, master
|
0
3 HEAD -> branchB
|
2 branchA
|
1 origin/master, master
|
0
5 HEAD -> branchC
|
4 branchB
|
3
|
| 2' branchA
| |
2 |
|/
1 origin/master, master
|
0
3 branchB
|
2 HEAD -> branchA
|
1 origin/master, master
|
0
5 branchC
|
4 branchB
|
3
|
| 2' HEAD -> branchA
| |
2 |
| |
| | 6 origin/master, master
| | |
|/ /
| /
|/
1
|
0
--amend
可以使用相同的父级创建新的提交2 HEAD -> branchA
|
1 origin/master, master
|
0
3 branchB
|
| 2' HEAD -> branchA
| |
2 |
|/
1 origin/master, master
|
0
4 HEAD -> branchB
|
3
|
| 2' branchA
| |
2 |
|/
1 origin/master, master
|
0
5' branchC
|
4' branchB
|
| 7 HEAD -> refactorA
| |
3' |
| /
2'' branchA, master
|
6 origin/master
|
1
|
0
3 HEAD -> branchB
|
| 2' branchA
| |
2 |
|/
1 origin/master, master
|
0
5 branchC
|
4 HEAD -> branchB
|
3
|
| 2'' branchA, master
| |
2 |
| |
| 6 origin/master
| |
| /
| /
|/
1
|
0
5' branchC
|
4' HEAD -> branchB
|
| 7 refactorA
| |
3' |
| /
2'' branchA, master
|
6 origin/master
|
1
|
0
2 HEAD -> branchA
|
1 origin/master, master
|
0
3 branchB
|
| 2' HEAD -> branchA
| |
2 |
|/
1 origin/master, master
|
0
4 HEAD -> branchB
|
3
|
| 2' branchA
| |
2 |
|/
1 origin/master, master
|
0
5' branchC
|
4' branchB
|
| 7 HEAD -> refactorA
| |
3' |
| /
2'' branchA, master
|
6 origin/master
|
1
|
0
==O==O==O==O master
\==A branchA
\==B branchB
\==C branchC
4 branchB, HEAD -> branchC
|
3
|
| 2' branchA
| |
2 |
|/
1 origin/master, master
|
0
3 HEAD -> branchB
|
2 branchA
|
1 origin/master, master
|
0
5 HEAD -> branchC
|
4 branchB
|
3
|
| 2' branchA
| |
2 |
|/
1 origin/master, master
|
0
1 origin/master, HEAD -> master
|
0
5 branchC
|
4 branchB
|
3
|
| 2' branchA
| |
2 |
|/
1 origin/master, HEAD -> master
|
0
5 branchC
|
4 branchB
|
3
|
| 2'' branchA
| |
2 |
| |
| 6 origin/master, HEAD -> master
| |
| /
| /
|/
1
|
0
1 origin/master, HEAD -> master
|
0
5 branchC
|
4 branchB
|
3
|
| 2' branchA
| |
2 |
| |
| | 6 origin/master, HEAD -> master
| | |
|/ /
| /
|/
2
|
0
3 branchB
|
2 HEAD -> branchA
|
1 origin/master, master
|
0
5 branchC
|
4 branchB
|
3
|
| 2' HEAD -> branchA
| |
2 |
| |
| | 6 origin/master, master
| | |
|/ /
| /
|/
1
|
0
==O==O==O==O==A master
\ \==B branchB
\==C branchC <== is this correct?
==O==O==O==O==A master
\==A' refactorA
\ \==B branchB <== is this correct?
\==C branchC
5 branchC
|
4 branchB
|
3
|
| 2'' HEAD -> branchA
| |
2 |
| |
| 6 origin/master, master
| |
| /
| /
|/
1
|
0
5 branchC
|
| 4' HEAD -> branchB
| |
4 |
| |
| 3'
| |
3 |
| |
| 2'' branchA, master
| |
2 |
| |
| 6 origin/master
| |
| /
| /
|/
1
|
0
5' branchC
|
| 4'' HEAD -> branchB
| |
4' |
| |
| 7 refactorA
| |
3' |
| /
2'' branchA, master
|
6 origin/master
|
1
|
0
1 origin/master, HEAD -> master
|
0
5 branchC
|
4 branchB
|
3
|
| 2' branchA
| |
2 |
|/
1 origin/master, HEAD -> master
|
0
5 branchC
|
4 branchB
|
3
|
| 2'' branchA
| |
2 |
| |
| 6 origin/master, HEAD -> master
| |
| /
| /
|/
1
|
0
5 branchC
|
4 branchB
|
3
|
| 2'' branchA, HEAD -> master
| |
2 |
| |
| 6 origin/master
| |
| /
| /
|/
1
|
0
3 HEAD -> branchB
|
| 2' branchA
| |
2 |
|/
1 origin/master, master
|
0
5 branchC
|
4 HEAD -> branchB
|
3
|
| 2'' branchA, master
| |
2 |
| |
| 6 origin/master
| |
| /
| /
|/
1
|
0
5' branchC
|
4' HEAD -> branchB
|
| 7 refactorA
| |
3' |
| /
2'' branchA, master
|
6 origin/master
|
1
|
0
==O==O==O==O==A master
\ \==B branchB
\==C branchC <== is this correct?
==O==O==O==O==A master
\==A' refactorA
\ \==B branchB <== is this correct?
\==C branchC
5 branchC
|
4 branchB
|
3
|
| 2'' HEAD -> branchA
| |
2 |
| |
| 6 origin/master, master
| |
| /
| /
|/
1
|
0
5 branchC
|
| 4' HEAD -> branchB
| |
4 |
| |
| 3'
| |
3 |
| |
| 2'' branchA, master
| |
2 |
| |
| 6 origin/master
| |
| /
| /
|/
1
|
0
5' branchC
|
| 4'' HEAD -> branchB
| |
4' |
| |
| 7 refactorA
| |
3' |
| /
2'' branchA, master
|
6 origin/master
|
1
|
0
5 HEAD -> branchC
|
| 4' branchB
| |
4 |
| |
| 3'
| |
3 |
| |
| 2'' branchA, master
| |
2 |
| |
| 6 origin/master
| |
| /
| /
|/
1
|
0
5' HEAD -> branchC
|
4' branchB
|
3'
|
2'' branchA, master
|
6 origin/master
|
/
/
/
1
|
0
==O==O==O==O==A master
|==A' refactorA
|==B branchB
\==C branchC
5' branchC
|
4' branchB
|
3'
|
2'' branchA, master, HEAD -> refactorA
|
6 origin/master
|
1
|
0
==O==O==O==O==A master
|==A' refactorA
|==B branchB
\==C branchC
5' branchC
|
4' branchB
|
3'
|
2'' branchA, master, HEAD -> refactorA
|
6 origin/master
|
1
|
0
2 HEAD -> branchA
|
1 origin/master, master
|
0
3 branchB
|
| 2' HEAD -> branchA
| |
2 |
|/
1 origin/master, master
|
0
4 HEAD -> branchB
|
3
|
| 2' branchA
| |
2 |
|/
1 origin/master, master
|
0
5' branchC
|
4' branchB
|
| 7 HEAD -> refactorA
| |
3' |
| /
2'' branchA, master
|
6 origin/master
|
1
|
0
3 HEAD -> branchB
|
| 2' branchA
| |
2 |
|/
1 origin/master, master
|
0
5 branchC
|
4 HEAD -> branchB
|
3
|
| 2'' branchA, master
| |
2 |
| |
| 6 origin/master
| |
| /
| /
|/
1
|
0
5' branchC
|
4' HEAD -> branchB
|
| 7 refactorA
| |
3' |
| /
2'' branchA, master
|
6 origin/master
|
1
|
0