私は中間のGitリポジトリを使用して、リモートのSVNリポジトリをミラーリングしています。このリポジトリから、クローンを作成して作業することができます。中間リポジトリには、アップストリームSVNから毎晩リベースされるマスターブランチがあり、機能ブランチに取り組んでいます。例えば:
remote:
master
local:
master
feature
機能ブランチをリモートに正常にプッシュして、期待どおりの結果を得ることができます。
remote:
master
feature
local:
master
feature
次に、リモートを追跡するためにブランチを再セットアップします。
remote:
master
feature
local:
master
feature -> origin/feature
そして、すべてが順調です。ここからやりたいのは、機能ブランチをリモートのマスターブランチにリベースすることですが、これはローカルマシンから行いたいと思います。私はできるようになりたいです:
git checkout master
git pull
git checkout feature
git rebase master
git push origin feature
リモート機能ブランチをリモートマスターで最新の状態に保つため。ただし、このメソッドにより、Gitは次のように文句を言います。
To <remote>
! [rejected] feature -> feature (non-fast-forward)
error: failed to push some refs to '<remote>'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
git pull
トリックを行いますが、回避したいマージコミットを引き起こします。feature -> feature
メッセージがではなく述べているのではないかと心配していますfeature -> origin/feature
が、これは単なるプレゼンテーションのことかもしれません。
私は何かが足りないのですか、それとも完全に間違った方法でこれを行っていますか?リモートサーバーでリベースを実行しないようにすることは重要ではありませんが、リベースからのマージの競合を修正することは非常に困難になります。