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

git rebase 如何解决 push rejected 问题?

  •  
  •   1oNflow · 2019-07-11 14:37:00 +08:00 · 2649 次点击
    这是一个创建于 1966 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想问个关于git rebase的问题,如果在本地把 feature_branch rebase 到最新的 dev 上,再 push 到远端 feature_branch 时,就会被拒绝(因为 commit 历史对不上,多了 dev 的 commit ),所以我目前都是把本地 feature_branch 的 commit 先 push 到远端,然后在 gitlab 网页上进行 fast-forward rebase 到 dev,然后删除本地 feature_branch,最后再把 feature_branch pull 回来。

    感觉这么操作比较麻烦,但又不想用 push -f,想问下有更优雅的方法吗?

    6 条回复    2019-07-11 21:54:38 +08:00
    sanwen
        1
    sanwen  
       2019-07-11 14:53:39 +08:00 via Android
    不是总调整 feature_branch 的 commit 顺序的话,直接本地 cherry-pick 新的修改到 dev,在 push☺
    1oNflow
        2
    1oNflow  
    OP
       2019-07-11 15:12:26 +08:00
    @sanwen 这个意思是把 dev 最新的几个 commit cherry-pick 到 feature_branch 的顶端,这样就能 fast-forward 了?不过应该不会有什么副作用吧
    rbe
        3
    rbe  
       2019-07-11 15:12:39 +08:00
    如果是自己管理、开发的 feature-branch,其实 push -f 无所谓吧
    rbe
        4
    rbe  
       2019-07-11 15:12:39 +08:00
    如果是自己管理、开发的 feature-branch,其实 push -f 无所谓吧
    msg7086
        5
    msg7086  
       2019-07-11 15:25:25 +08:00
    你描述的就是 force push,然后你又不想用 force push,你就说你想怎么样吧。

    GitLab 网页版进行 Rebase 就相当于你本地 rebase + force push 的过程。
    momocraft
        6
    momocraft  
       2019-07-11 15:39:55 +08:00
    push --force-with-lease
    实质是 CAS,比 force 安全一点点
    sanwen
        7
    sanwen  
       2019-07-11 21:54:38 +08:00 via Android
    嗯,刚开始我可能理解错了,我以为你得最新 commit 在 feature_branch 上,如果在 dev 上其实意思也就是你回复的这样,因为有共同的历史,所以可以 cherrypick 最新的 commit
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3768 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 10:39 · PVG 18:39 · LAX 02:39 · JFK 05:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.