首页 > 解决方案 > rebase 提交顺序混乱

问题描述

我得到这个快照git rebase

在此处输入图像描述

您会看到功能提交在 rebase 之后位于 master 的前面。

但是,我在我的 repo 中进行了测试(origin/repo master vs local/repo master)。

提交顺序是本地/repo master 在 rebase 之后位于前面。

结果:

提交的时间顺序:

local/repo master 1111

origin/repo master 333
origin/repo master 444
origin/repo master 555

从变基后

$ git log --oneline --graph
* a7b57ce (HEAD -> master) 1111   # this commit of local/repo master become the latest. 
* 4255c42 (origin/master, origin/HEAD) 555
* 0eafba2 444
* 4838fca 333

这违反了显示被重新设置的分支提交应该在启动重新设置的人之前的快照。

标签: git

解决方案


您变基的方向会影响结果:

将 foo 重新定位到 bar 上:

git log --oneline --graph foo bar

* 7b56f8f (HEAD -> bar) 33
| * 4ac5cb6 (foo) 22
|/  
* 0d5ab43 11

git checkout foo
git rebase bar
git log --oneline --graph foo bar

* 35c0b9e (HEAD -> foo) 22
* 7b56f8f (bar) 33
* 0d5ab43 11

将 bar 重新设置为 foo:

git log --oneline --graph foo bar

* 7b56f8f (HEAD -> bar) 33
| * 4ac5cb6 (foo) 22
|/  
* 0d5ab43 11

git checkout bar
git rebase foo
git log --oneline --graph foo bar

* affebfd (HEAD -> bar) 33
* 4ac5cb6 (foo) 22
* 0d5ab43 11

推荐阅读