这是一个创建于 2131 天前的主题,其中的信息可能已经有所发展或是发生改变。
某个裸库,有分支 a 和 b,其中分支 a 在裸库中的 commit log 是 1->2->3->4,b 在裸库中的 commit log 是 1->2->3->E->R
,然后从这个裸库中拉取代码到本地,发现分支 a 的 commit log 变成了 1->2->3->E->R->4,这是为什么,能请 v 友指点指点吗
第 1 条附言 · 2018-11-19 18:19:35 +08:00
之前我理解有误,现在发现复现方法了,
----
* 1647898 C
* 8ffb12a B
| * 8aab566 C
|/
* 205ffc9 A
* 503e2ad Merge remote-tracking branch 'origin/dev'
|\
| * 5a4e6f5 dev
* | 9b78086 master
|/
* be0bd33 Initial empty repository
---
左边是 master,右边是 dev,本地将 dev 分支 merge 到 master 之后,push 到远程库并入库,然后
1 本地在 master 分支上提交 A 并 push 到远程 master 入库,
2 还是本地在 master 分支上,接着在 A 基础上提交 B 并 push 到远程 master 入库
3 还是本地在 master 分支上,提交 C,push 到远程 dev 分支上并入库
然后查看本地的分支情况,就是上图了
问题:
为什么 C 的父节点是 A,而不是 dev ?我记得俩个分支相互在本地直接 push 到远程的对方的分支并入库后,会自动更正父节点的啊?
4 条回复 • 2018-11-19 11:55:23 +08:00
|
|
1
sagaxu 2018-11-19 09:26:13 +08:00 via Android
pull 的时候做了 rebase
|
|
|
2
linchengzzz 2018-11-19 10:29:53 +08:00
应该是 A rebase B 了
|
|
|
3
supuwoerc 2018-11-19 11:32:30 +08:00
--rebase
|
|
|
4
msg7086 2018-11-19 11:55:23 +08:00
Fetch 了以后做了 Rebase。 正常 Fetch 只会把远端拉到本地,不会做任何操作。如果你用了 Pull,要么是 Fetch+Merge,要么是 Fetch+Rebase,总之都会变。
|