求教...把 feature 分支给 rabase 到了 master 上,并且 push 了....怎么破? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
malkavia
V2EX    git

求教...把 feature 分支给 rabase 到了 master 上,并且 push 了....怎么破?

  •  
  •   malkavia 2016-11-22 15:57:02 +08:00 4347 次点击
    这是一个创建于 3246 天前的主题,其中的信息可能已经有所发展或是发生改变。
    使得所有在 master 上,不在 feature 上的几十条 commit 又重新被提交了一遍

    只能 reset --hard 到拉出 feature 分支的节点上将原本在 master 上的 commit 重新 cherry-pick ,再 merge feature 分支吗?

    还是说就让它们放在那里,不管了?

    p.s. 为了避免更乱,已经叫同事们暂时不要 push 代码了,可以用 push --force 来回退
    16 条回复    2016-11-23 15:45:24 +08:00
    lonenol
        1
    lonenol  
       2016-11-22 16:02:30 +08:00   1
    本地回退,删掉远程分支,重新 push ,master 分支的话要去掉分支保护功能
    alexapollo
        2
    alexapollo  
       2016-11-22 19:48:19 +08:00
    reset 到上一次操作
    yxzblue
        3
    yxzblue  
       2016-11-22 19:53:25 +08:00
    有什么是 revert 做不到的?
    cxh116
        4
    cxh116  
       2016-11-22 19:57:17 +08:00 via Android
    @yxzblue rebase 不是 merge ,用 revert 还真做不到。就跟 merge 加了 ff 参数,不会生成 commit ,一样不能用 revert 。
    XiaoxiaoPu
        5
    XiaoxiaoPu  
       2016-11-22 19:59:23 +08:00   3
    git reflog 里找到 rebase 操作前的 hash , git check ${hash} 就可以回到操作前 master 所在的 commit ,重新建一个 master 分支,然后 git push --force origin master
    hntsy
        6
    hantsy  
       2016-11-22 22:54:58 +08:00
    reset, cherry pick.
    zwzmzd
        7
    zwzmzd  
       2016-11-23 00:30:04 +08:00 via Android
    个人觉得 5 楼方法靠谱,好多次干了挫事都是靠 reflog 救命
    tunetoystory
        8
    tunetoystory  
       2016-11-23 00:43:10 +08:00
    reset && push -f && 通知所有人~
    msg7086
        9
    msg7086  
       2016-11-23 07:08:06 +08:00   1
    我的建议,如果你实在搞不清分支间要怎么处理,那么最好还是弄个图形界面。
    安利一下 SmartGit ,打开 Log 界面,把 Commit 理顺了,然后 force push 一次解决问题。
    这种危险操作我真心不推荐用命令行来搞。
    msg7086
        10
    msg7086  
       2016-11-23 07:09:56 +08:00
    另外说一句。如果 master 的提交被复制到了 feature 上,这种情况是他 rebase 了 master 到 feature ,而不是你标题说的 feature 给 rebase 到 master 上。后者是很安全的,我们天天在做,前者才是反向 rebase ,才是大问题。
    shanjinwei
        11
    shanjinwei  
       2016-11-23 08:10:21 +08:00 via Android
    对此差异,修改过后上传
    malkavia
        12
    malkavia  
    OP
       2016-11-23 09:16:00 +08:00
    @XiaoxiaoPu 我这样试过, checkout 到之前的 hash 上之后,会丢掉所有 <生成两次 commit 的提交>
    malkavia
        13
    malkavia  
    OP
       201611-23 09:16:42 +08:00
    @msg7086 是的是的,我发帖的时候没有理清,确实是反向 Rebase
    rashawn
        14
    rashawn  
       2016-11-23 10:05:09 +08:00 via iPhone
    最简单的就是 checkout 回去 新建分支 删掉远程 然后覆盖
    shihty5
        15
    shihty5  
       2016-11-23 11:28:23 +08:00
    reflog 能记录下所有分支所有事件。
    通过时光机回到过去某个节点,然后重新开始就好了。
    真希望人生也是这样。
    iluhcm
        16
    iluhcm  
       2016-11-23 15:45:24 +08:00
    Sourcetree+ git reset --hard 已经拯救了无数回
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4170 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 00:59 PVG 08:59 LAX 17:59 JFK 20:59
    Do have faith in what you're doing.
    ubao 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