ソースgitリポジトリーでは、継続的な統合ビルド・プロセスが指し示されています。プロセスが実行されると、CIプロセスはその出力をリリース・リポジトリにプッシュします。私の質問は次のようなシナリオを中心に展開しています。Gitリモートへのハード・プッシュ後にローカル・リポジトリーをリセットします
- 私たちのCIサーバーはソースからビルドし、その結果をリリースリポジトリにプッシュします。
- 開発者はリリースリポジトリをチェックアウトし、(CIプロセスでは追加されていない)スキーマ変更スクリプトを追加して、前のコミットを修正し、強制的にプッシュ操作を実行しますスクリプトを追加するだけです)。
- 次回CIプロセスが実行され、出力をプッシュしようとすると、「現在のブランチの先端がリモートの相手の背後にあるため、更新が拒否されました」というエラーが表示されます。
私がしたいのは、ローカルリポジトリとリモートリポジトリが正確に一致するようにCIサーバに指示することです。私はいくつかの同様の問題を見てきた、そして、彼らはすべて次のコマンド(または非常に似ている)を実行すると言う。
git reset --hard [remote repository]
git fetch --all
-
でも、ビルドプロセスの前にこれらのコマンドを実行した後、私はまだ同じエラーを取得します。私が何をすべきかについてのアイデアは何ですか?あるいは、私がやりたいことが可能であれば。
'git fetch'のあとに' git reset -hard origin/branch'を実行してみてください。それはうまくいくはずです。 – Whymarrh
fetch + resetが機能しない場合、そのエラーは誤解を招き、修正方法を知りたいと思っている情報の詳細が必要になります – Whymarrh
どうしても間違ったリセットをしたに違いないと思われます。答えは、あなたは正しかった、上記は動作しました –