git rebase遇到的一个疑问
仅有的幸福
仅有的幸福 2017-05-02 09:19:29
0
2
574

最近工作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更新到最新了?不知道是不是我操作流程的问题,请大牛们指教,谢谢!

仅有的幸福
仅有的幸福

全員に返信(2)
世界只因有你

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

いいねを押す +0
Ty80

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

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート