关于 git rebase 的一点疑问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
caneman
V2EX    git

关于 git rebase 的一点疑问

  •  
  •   caneman Dec 3, 2019 3440 views
    This topic created in 2339 days ago, the information mentioned may be changed or developed.

    0.现在有两个分支 master 和 server

    1.我在 master 分支执行,git rebase server 和 git rebase server master 结果一致,都仅仅只影响到了 master 分支,server 分支无变化,到这里我觉得没什么问题。

    退到 0

    这一次我在 master 分支执行 git rebase master server,server 分支按预期的结果发生了变化,但是我疑惑的是: 为什么 master 分支也发生了跟 server 分支一样的变化?(两个分支变得一模一样了)

    按理说 master 分支不应该什么也不变吗?

    按我的理解 git rebase master server = git checkout server & git rebase master

    其实也就是:在 server 分支 ,git rebase master server = git rebase master

    那么:在 master 分支 git rebase master server = ?,如果还是 = git rebase master

    那么在 master 分支执行完毕后不应该 server 和 master 分支都不发生变化嘛?(相当于 master 分支执行 git rebase master )

    Supplement 1    Dec 3, 2019
    问题关闭!

    不好意思,大伙,我在本地复现了一下,没有出现 2 ( master 和 server 分支变一样的情况)

    一切如 1 的解释,git rebase master server 就是相当于 git checkout server & git rebase master

    这个命令本来就是方便你,在 master 分支的情况下,可以不 checkout 到 server 分支,就可以执行 rebase master 的操作

    我之所以提这个问,是因为开始学 git,然后在 githug 这个游戏,第四十关( rebase )操作的时候,发现了这个情况,我理所当然的认为 githug 里面模拟的 git 环境应该是和本地一致的,就没有在本地验证,查阅了很多文档,也都是如 1 所说那样,所以才迷惑不解。

    现在来看可能是 githug 里面的 git 环境本身就有 bug 或者 git 版本不一导致的。
    ( githug git 版本:git version 1.8.3.1,本机版本:git version 2.21.0.windows.1 )

    (在 githug 四十关(可以用 githug reset rebase 快速定位):在 master 分支执行 git rebase master feature,会导致 master 分支同步 feature 的更改,本地环境下并不能复现这个状况)
    9 replies    2019-12-04 09:06:05 +08:00
    wangyzj
        1
    wangyzj  
       Dec 3, 2019
    master <------ master <------ server
    |_________________________↑
    一种递归的赶脚
    zunceng
        2
    zunceng  
       Dec 3, 2019
    git rebase [-i | --interactive] [<options>] [--exec <cmd>] [--onto <newbase>]
    [<upstream> [<branch>]]
    If <branch> is specified, git rebase will perform an automatic git checkout <branch> before doing anything else. Otherwise it remains on the current branch.

    If <upstream> is not specified, the upstream configured in branch.<name>.remote and branch.<name>.merge options will be used (see git-config(1) for details) and
    the --fork-point option is assumed. If you are currently not on any branch or if the current branch does not have a configured upstream, the rebase will abort.

    我读了文档我懂了 你呢
    caneman
        3
    caneman  
    OP
       Dec 3, 2019
    这是 git help rebase 里面的文档,已经看过了,我上面 git rebase master server = git checkout server & git rebase master 就是从这里看到的,是我理解错了吗?能否不吝赐教?谢谢~
    zunceng
        4
    zunceng  
       Dec 3, 2019
    rebase 的 upstream 都是远程分支 你操作多了弄混了吧
    caneman
        5
    caneman  
    OP
       Dec 3, 2019
    @zunceng 他这个写的是 master 和 origin master 是等同的吧?我在 git 手册里面 关于 rebase 的说明里面 看到了 git rebase master server 这种用法,可以在不切换分支的情况下对另一个分支进行 rebase 操作。

    我刚刚本地不能复现,可能是 git 版本的问题,我写题目附录里面了。
    niming007zh
        6
    niming007zh  
       Dec 3, 2019
    我跟你讲,git 的 1.6,1.7,1.8.....版本之前都有不少差异,甚至命令都变了。
    遇事不决,升级 git。
    xingheng
        7
    xingheng  
       Dec 3, 2019 via iPhone
    从来都是 git rebase branch1 branch2 这种格式,无视操作前当前分支是什么,记住 branch1 会垫底,branch2 会跑上面去就行了
    xingheng
        8
    xingheng  
       Dec 3, 2019 via iPhone
    从来都是 git rebase branch1 branch2 这种格式,无视操作前当前分支是什么,记住 branch1 会垫底,branch2 会跑上面去就行了
    caneman
        9
    caneman  
    OP
       Dec 4, 2019
    @xingheng 对啊,我遇到的情况是,branch1 会把 branch2 上的修改同步一遍,就是两个分支都变成了 branch1 垫底,branch2 跑上面去
    About     Help     Advertise     Blog     API     FAQ     Solana     1193 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 110ms UTC 17:43 PVG 01:43 LAX 10:43 JFK 13:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86