V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
tuobashao
V2EX  ›  问与答

git 裸库中,某个分支的 commit 历史,和拉取到本地之后查看该分支的 commit log 不一致

  •  
  •   tuobashao · 2018-11-19 08:35:58 +08:00 · 1953 次点击
    这是一个创建于 2221 天前的主题,其中的信息可能已经有所发展或是发生改变。
    某个裸库,有分支 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
    sagaxu
        1
    sagaxu  
       2018-11-19 09:26:13 +08:00 via Android
    pull 的时候做了 rebase
    linchengzzz
        2
    linchengzzz  
       2018-11-19 10:29:53 +08:00
    应该是 A rebase B 了
    supuwoerc
        3
    supuwoerc  
       2018-11-19 11:32:30 +08:00
    --rebase
    msg7086
        4
    msg7086  
       2018-11-19 11:55:23 +08:00
    Fetch 了以后做了 Rebase。
    正常 Fetch 只会把远端拉到本地,不会做任何操作。如果你用了 Pull,要么是 Fetch+Merge,要么是 Fetch+Rebase,总之都会变。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3016 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 14:13 · PVG 22:13 · LAX 06:13 · JFK 09:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.