1oNflow
V2EX  ›  问与答

git rebase 如何解决 push rejected 问题?

  •  
  •   1oNflow · Jul 11, 2019 · 3366 views
    This topic created in 2516 days ago, the information mentioned may be changed or developed.

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

    GitLab 网页版进行 Rebase 就相当于你本地 rebase + force push 的过程。
    momocraft
        6
    momocraft  
       Jul 11, 2019
    push --force-with-lease
    实质是 CAS,比 force 安全一点点
    sanwen
        7
    sanwen  
       Jul 11, 2019 via Android
    嗯,刚开始我可能理解错了,我以为你得最新 commit 在 feature_branch 上,如果在 dev 上其实意思也就是你回复的这样,因为有共同的历史,所以可以 cherrypick 最新的 commit
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2677 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 11:31 · PVG 19:31 · LAX 04:31 · JFK 07:31
    ♥ Do have faith in what you're doing.