このエラーが原因で、ローカルマスターからリモートマスターに変更をプッシュする際に問題が発生しています。
remote: Processing changes: refs: 1, done
To ssh://[email protected]:29418/xxxxxx
! [remote rejected] HEAD -> refs/for/master (change 14823 closed)
error: failed to Push some refs to 'ssh://[email protected]:29418/xxxxxx'
この問題を解決する方法はありますか?
git statusは、私のブランチがOrigin/masterより5コミット先だと言っています。
私は同じメッセージを受け取りました。それは、2つのコミットで同じChange-Idを取得できたためです。たぶん、私の地元の支店間でのチェリーピッキングまたは類似のものが原因です。コミットメッセージからChange-Idを削除することで解決し、コミットフックによって新しいIDが追加されました。
コミット変更IDの有効期限が切れています。つまり、レビュー14823は終了しています。同じものにプッシュすることはできません。
これを実行して問題を修正します。
git commit --amend
変更XXXXXクローズエラーのために、Originに変更をプッシュできない理由を正確に説明する次のページを見つけました: https://git.Eclipse.org/r/Documentation/error-change- closed.html
乾杯!
5つのコミットがあります。
すべてのファイルには、「コミットメッセージ」(Gerritが使用)というファイルがあります。
これらのファイルの1つには、既に受け入れられた「Change-Id」が不正です
Gerritによってマスターにマージされたため、再び使用することはできません。
1つの修正方法は、5つのコミットすべてを1つにマージすることです。
そしてその過程で、
「コミットメッセージ」ファイルの「Change-Id」を削除します。
私の場合、3つのコミットがあったため、次のようにしました。
git rebase -i HEAD〜3
複数のコミットをマージする方法は他にもあります。
Gitを使用して最後のXコミットをつぶします
git statusは、私のブランチがOrigin/masterより5コミット先だと言っています。
私がしていることはすべて、最新のコードを取得することです。いくつかの微調整を行い、それをプッシュします。
これらの5つのコミットとは何ですか?それらはすべてあなたのものですか?
変更14823は、これら5つのコミットの1つに対応していますか? Gerritでのステータスはどうなっていますか?
change 14823 closed
メッセージはバニラgit
から送信されません。そのリポジトリを管理している人が、ローカルポリシーのためにプッシュを評価し、それを拒否している更新または更新後のフックを持っていることを示します)。それらのポリシーが何であるか、コミットを追加できるように変更を再度開く必要があるかどうか、または新しい変更要求を作成して(おそらく)作業をリベースする必要があるかどうかを確認する必要があります。それ。
私の場合、私は2つのコミットを持っていました、最初のコミットは私のものでしたが、2番目のコミットはそうではなかったので、このように修正します
お役に立てば幸いです。
これは、マージされた、または破棄されたgerritの変更が既に存在する場合に発生する可能性があります。放棄された場合(私の場合)、その変更をgerritで復元し、復元された変更の上に新しい変更を適用します。
https://gerrit-review.googlesource.com/Documentation/error-change-closed.html
リベースして、その間に閉じられた(マージまたは放棄された)レビューに関連するコミットを選択した場合、単にリベースし、選択する代わりにコミットをドロップすることができますレビューに関連します。その後、問題なくプッシュできるようになります。 Change-Idを再生/変更する提案に強く反対します。 gitコマンドの詳細を説明すると、次のようになります。
git fetch; git rebase Origin/a_branch --interactive
すべてのコミットを選択しています...競合を修正してからgit add ...
git rebase --continue
git Push Origin HEAD:refs/for/refs/heads/a_branch
->リモート拒否...変更###クローズ
次に、以下を実行します。
git fetch; git rebase Origin/a_branch --interactive
削除(ドロップ)する必要がある変更###に関連するコミットを除くすべてのコミットを選択(選択)します。競合は発生せず、すぐにリベースが成功します(競合は以前のリベースですでに解決されています)。次に:
git Push Origin HEAD:refs/for/refs/heads/a_branch
問題は複数ある可能性がありますが、変更が古いコミットの上にあるという問題がある場合(何らかの理由でマージされた可能性があります)、必要なことは次のとおりです。
ステップ1:gitログを削除するコミットの前にコミットを見つける
ステップ2:git checkoutをコミットするチェックアウト
ステップ3:現在のチェックアウトを使用して新しいブランチを作成するcommit git checkout -b
ステップ4:削除されたコミットの後にコミットを追加する必要がありますgit cherry-pick
ここで、変更をgerritにプッシュします。変更を受け入れます。
URL(ssh://[email protected]:29418/xxxxxx)と「HEAD-> refs/for/master」の両方で示されているコードレビューツールであるgerritにプッシュしています。 「メッセージ。変更が拒否された理由を把握するには、プッシュしようとしているリポジトリを管理している人に相談する必要があります。
私と私の先輩は解決策を得るために1時間以上働いているので、以下で試しました、それは私のために働いています
すべてがうまくいくはずです
コミットをプッシュし、ターミナルに次のように表示されると、この問題も発生します。
! [リモートが拒否されました] HEAD-> refs/for/Android_ui.lnx.1.2.c1-dev(変更1692698が閉じられました)
サイトを確認して、1692698に対応する変更を確認します。コミットメッセージは次のとおりです。「WiFiホストポットを初めて有効にするときにUSBテザリングのヘルプを表示する」
次に、ターミナルでコミットログを表示します。
プッシュが失敗する理由は、現在のchangIDがeb47ef919064aff516ced4bbd9d8ade0ed34b107コミットと同じであるためです。そのため、現在の変更をバックアップし、753668be1207baa514be1bbd985f3db2d6317608にハードリセットし、最後にバックアップの変更、追加、コミット、プッシュを適用します。
これで問題を解決できることを願っています。
5つのコミットがあります。
各コミットには、コミットがGerritに属する変更要求を識別する「Change-Id:」文字列を含む「コミットメッセージ」があります( https://git.Eclipse.org/r/Documentation/ user-changeid.html )
この場合、Change-Id文字列で識別される変更要求の1つ(またはそれ以上)は、Gerritによって既にマージまたは破棄されているため、再度使用することはできません。
プッシュする前に、1つ(または複数)のコミットのコミットメッセージを変更する必要があります( http://schacon.github.io/history.html を参照)、またはremovingそれらを使用して新しい変更要求を作成するか、modifyingして、正しいGerrit変更要求を識別しますコミットごとに。
これを試して。 git Push --no-thin Origin xxxxxx:refs/for/sprint/yyyyyy