ホームページ  >  に質問  >  本文

git rebase遇到的一个疑问

最近工作git管理方面遇到一个疑问,如下:
我有两个分支devfeature 分支,目前出现如下疑问,
我在feature分支先执行 git pull origin feature操作,更新本地的分支到最新,然后执行了git rebase dev操作,最后执行git push origin feature时会遇到如下错误

To ssh://xxx@git.xxxx.com/project_xx/xxx.git
 ! [rejected]        feature -> feature (non-fast-forward)
error: failed to push some refs to 'ssh://xxx@git.xxxx.com/project_xx/xxx.git'
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 pull origin feature操作才能成功,这样会产生一条merge log,并且内容为空Showing 0 changed files

疑问,为什么我之前已经执行了pull更新到最新了?不知道是不是我操作流程的问题,请大牛们指教,谢谢!

仅有的幸福仅有的幸福2727日前552

全員に返信(2)返信します

  • 世界只因有你

    世界只因有你2017-05-02 09:21:29

    質問は次のようになります:
    まず、フィーチャー ブランチはリモート ブランチです。リベースすると、ローカル フィーチャー ブランチは dev ブランチに配置されますが、フィーチャーのリモート追跡ブランチ (origin/feature) は元の場所に残ります。このようにプッシュすると、git はプッシュ時にブランチの履歴コミットをチェックし、現在のブランチの最後のコミットがリモート ブランチの最新のコミットではない場合、git は送信を阻止します。 。新しいブランチをフォローするにはプルする必要があります。
    また、トラッキング ブランチをローカル ブランチから分離することは得策ではない可能性があります。追跡ブランチを削除し、ローカル ブランチの構造をリモート エンドに同期することが目的の場合。最初にリモート機能を削除すると、ローカル追跡ブランチが削除されます。あとは押すだけです。 git push origin :feature

    返事
    0
  • PHP中文网

    PHP中文网2017-05-02 09:21:29

    申し訳ありません、再テストしたところ、思っていたものと全く違うことが分かりました。
    確かに拒否が発生し、プルして再度プッシュすることしかできず、競合が発生する可能性があります。
    [私自身の実験によると、リベース後にオリジン/フィーチャーがフォークしました。これは git gui を使用して表示できます。その理由は、リベースによってコミット間の親子関係が変更されるためです。

      ローカルブランチのみをリベースすることをお勧めします
    http://stackoverflow.com/questions/8939977/git-push-rejected-after-fea...

    返事
    0
  • キャンセル返事