我的git rebase工作流出了什么问题?

我的git rebase工作流出了什么问题?,git,github,git-rebase,Git,Github,Git Rebase,我的团队正在从git合并工作流转向rebase工作流,我不明白我做错了什么。我的工作主要是作为一个模板。最终,我们希望能够提交一个github pull请求,并提交来自我的分支的提交,这样就不会与master发生合并冲突。如果拉请求只能包含我的提交(出于代码审查目的),那就太好了 情况如下: 我为我的功能创建了一个master分支 做一些工作 我通过以下方式从master重新设置到我的本地分支机构: git fetch git rebase origin/master 我会处理任何合并冲突,

我的团队正在从git合并工作流转向rebase工作流,我不明白我做错了什么。我的工作主要是作为一个模板。最终,我们希望能够提交一个github pull请求,并提交来自我的分支的提交,这样就不会与master发生合并冲突。如果拉请求只能包含我的提交(出于代码审查目的),那就太好了

情况如下:

  • 我为我的功能创建了一个master分支
  • 做一些工作
  • 我通过以下方式从master重新设置到我的本地分支机构:

    git fetch
    git rebase origin/master
    
  • 我会处理任何合并冲突,然后使用

    git mergetool
    git rebase --continue
    
  • 因为我是唯一一个在我的分支上工作的人,所以我希望能够用

    git push origin myBranch
    
  • 然而,当我试着推的时候,我得到了以下结果

    $ git push origin myBranch 
    To <github address>
     ! [rejected]        myBranch -> myBranch (non-fast-forward)
    error: failed to push some refs to <github address>
    hint: Updates were rejected because the tip of your current branch is behind
    hint: its remote counterpart. Integrate the remote changes (e.g.
    hint: 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    
    $git推送源myBranch
    到
    ! [拒绝]myBranch->myBranch(非快进)
    错误:无法将某些引用推送到
    提示:更新被拒绝,因为当前分支的提示已过期
    提示:它的远程对应项。集成远程更改(例如。
    提示:“git pull…”),然后再推。
    提示:有关详细信息,请参阅“git push--help”中的“关于快进的说明”。
    
  • 如果我尝试
    git-rebase-origin/myBranch
    ,我会遇到很多冲突,因为我从master获取的提交都在抱怨我的分支中存在以前的rebase(但我从未亲自更改过)

  • 我以前在这里看到过这个错误:

    git push github master
    To git@github.com:Joey-project/project.git
     ! [rejected]        master -> master (non-fast-forward)
    error: failed to push some refs to 'git@github.com:Joey-project/project.git'
    
    一般解决方案是使用以下命令的变体:

    git fetch github; git merge github/master
    

    我还建议您看看,它可以让您进一步了解如何解决这个问题。

    您必须使用
    git push-f
    强制推送。默认情况下,
    git push
    仅允许快进合并(即,仅当新提交是远程repo中已提交的提交的直接后代时,才允许推送分支)
    git-rebase
    重写历史记录,这会更改分支上的所有提交,因此您必须强制推送。如果您不想强制推送(
    push-f
    )您的功能分支,您必须避免在将其推送到GitHub后重新对功能分支进行重定

    我使用此工作流时没有收到您在步骤6中提到的错误

    • git签出主机
    • git pull
    • git签出-b功能\u分支机构
    • git提交-m“完成我的工作”
    • git签出主机
    • git pull
    • git签出功能\u分支机构
    • git重新基址主机
    • git推送原点功能\u分支
    如中所述,如果在签出要素分支时执行以下操作,则必须强制推送要素分支:

    • git推送原点功能\u分支
    • git重新基址主机
    • git推送原点功能_分支
      #错误
    • git-push-f原点功能\u分支

    最后一个命令-
    git push-f origin-feature\u branch
    -如果您是唯一一个在该分支上工作的人,那么该命令应该不会导致任何问题。

    我意识到我可以在第6步使用
    git push-f
    ,因为我是唯一在我的分支上工作的人。不过我想弄清楚我做错了什么,这样我就不会再陷入这种境地了。哎呀。那太可怕了。我希望找到一种不必强迫的方法。谢谢你的建议。@rarrr:如果你是唯一一个在分支机构工作的人,那就没什么问题了。谢谢。你提供的链接给了我一些思考的东西,因为这几乎是我的真实情况。这基本上就是我最终要做的。如果我的分支变得怪异,我只会创建第二个分支,然后cherry从原始分支中选择我的提交。谢谢你的提示。