web-dev-qa-db-ja.com

Gitプッシュリモートが拒否されました{change ### closed}

このエラーが原因で、ローカルマスターからリモートマスターに変更をプッシュする際に問題が発生しています。

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コミット先だと言っています。

39
jonney

私は同じメッセージを受け取りました。それは、2つのコミットで同じChange-Idを取得できたためです。たぶん、私の地元の支店間でのチェリーピッキングまたは類似のものが原因です。コミットメッセージからChange-Idを削除することで解決し、コミットフックによって新しいIDが追加されました。

37
Johan

コミット変更IDの有効期限が切れています。つまり、レビュー14823は終了しています。同じものにプッシュすることはできません。

これを実行して問題を修正します。

  1. git commit --amend
  2. 変更IDを削除
  3. 保存して終了
  4. 新しい変更IDがコミットに追加されます。 git logで確認できます。
  5. もう一度押す
18
suprith

変更XXXXXクローズエラーのために、Originに変更をプッシュできない理由を正確に説明する次のページを見つけました: https://git.Eclipse.org/r/Documentation/error-change- closed.html

乾杯!

6
Sterling Bourne

5つのコミットがあります。

すべてのファイルには、「コミットメッセージ」(Gerritが使用)というファイルがあります。
これらのファイルの1つには、既に受け入れられた「Change-Id」が不正です
Gerritによってマスターにマージされたため、再び使用することはできません。

1つの修正方法は、5つのコミットすべてを1つにマージすることです。
そしてその過程で、
「コミットメッセージ」ファイルの「Change-Id」を削除します。

私の場合、3つのコミットがあったため、次のようにしました。
git rebase -i HEAD〜3

複数のコミットをマージする方法は他にもあります。
Gitを使用して最後のXコミットをつぶします

4
user77115

git statusは、私のブランチがOrigin/masterより5コミット先だと言っています。

私がしていることはすべて、最新のコードを取得することです。いくつかの微調整を行い、それをプッシュします。

これらの5つのコミットとは何ですか?それらはすべてあなたのものですか?

変更14823は、これら5つのコミットの1つに対応していますか? Gerritでのステータスはどうなっていますか?

1

change 14823 closedメッセージはバニラgitから送信されません。そのリポジトリを管理している人が、ローカルポリシーのためにプッシュを評価し、それを拒否している更新または更新後のフックを持っていることを示します)。それらのポリシーが何であるか、コミットを追加できるように変更を再度開く必要があるかどうか、または新しい変更要求を作成して(おそらく)作業をリベースする必要があるかどうかを確認する必要があります。それ。

1
twalberg

私の場合、私は2つのコミットを持っていました、最初のコミットは私のものでしたが、2番目のコミットはそうではなかったので、このように修正します

  1. change 1482でコミットされたファイルを見つけます
  2. 最も古いコミットを見つけて、softを親にリセットします。ハードリセットを行うと、すべてのコミットが失われる可能性があることに注意してください。
  3. 変更をもう一度コミットしようとしますが、今回はchange 1482

お役に立てば幸いです。

1
Hazhir

EGitユーザー向けのソリューション:

  1. [修正]ボタンをクリックします enter image description here


  1. バックスペースボタンを使用してコミットメッセージ領域からChange-Idを削除します(これはこのスクリーンショットとは異なるものになります)
  2. [変更IDの追加]ボタンをクリックします enter image description here

  3. 変更をコミットしてプッシュします。

0
burakhan alkan

これは、マージされた、または破棄されたgerritの変更が既に存在する場合に発生する可能性があります。放棄された場合(私の場合)、その変更をgerritで復元し、復元された変更の上に新しい変更を適用します。

https://gerrit-review.googlesource.com/Documentation/error-change-closed.html

0
r11

リベースして、その間に閉じられた(マージまたは放棄された)レビューに関連するコミットを選択した場合、単にリベースし、選択する代わりにコミットをドロップすることができますレビューに関連します。その後、問題なくプッシュできるようになります。 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
0
Phil

問題は複数ある可能性がありますが、変更が古いコミットの上にあるという問題がある場合(何らかの理由でマージされた可能性があります)、必要なことは次のとおりです。

ステップ1:gitログを削除するコミットの前にコミットを見つける

ステップ2:git checkoutをコミットするチェックアウト

ステップ3:現在のチェックアウトを使用して新しいブランチを作成するcommit git checkout -b

ステップ4:削除されたコミットの後にコミットを追加する必要がありますgit cherry-pick

ここで、変更をgerritにプッシュします。変更を受け入れます。

参照: https://www.clock.co.uk/insight/deleting-a-git-commit

0
nurieta

URL(ssh://[email protected]:29418/xxxxxx)と「HEAD-> refs/for/master」の両方で示されているコードレビューツールであるgerritにプッシュしています。 「メッセージ。変更が拒否された理由を把握するには、プッシュしようとしているリポジトリを管理している人に相談する必要があります。

0
ebneter

私と私の先輩は解決策を得るために1時間以上働いているので、以下で試しました、それは私のために働いています

  1. .git/logs/refs/heads/{{branch}}フォルダーからすべてのブランチをバックアップし、リポジトリ内の更新されたファイル
  2. エラーの原因となるブランチを削除しました
  3. ブランチ「git branch '{{新しいブランチ名}}'」を作成します
  4. リポジトリファイルを関連するフォルダーに戻す
  5. git commit -m "{{commit message}}"
  6. git Push Origin HEAD:refs/for/master

すべてがうまくいくはずです

コミットをプッシュし、ターミナルに次のように表示されると、この問題も発生します。

! [リモートが拒否されました] HEAD-> refs/for/Android_ui.lnx.1.2.c1-dev(変更1692698が閉じられました)

サイトを確認して、1692698に対応する変更を確認します。コミットメッセージは次のとおりです。「WiFiホストポットを初めて有効にするときにUSBテザリングのヘルプを表示する」

次に、ターミナルでコミットログを表示します。

  • b49c0f91744cb6f863616976c4fb4157c7af4b8c Wi-Fi接続でUSBテザリングを有効にすると、プロンプトが正しくありません。
  • eb47ef919064aff516ced4bbd9d8ade0ed34b107 WiFiホストポットを初めて有効にしたときにプロンプ​​トUSBテザリングのヘルプ
  • 753668be1207baa514be1bbd985f3db2d6317608ホットストップ通知のバグを修正。

プッシュが失敗する理由は、現在のchangIDがeb47ef919064aff516ced4bbd9d8ade0ed34b107コミットと同じであるためです。そのため、現在の変更をバックアップし、753668be1207baa514be1bbd985f3db2d6317608にハードリセットし、最後にバックアップの変更、追加、コミット、プッシュを適用します。

これで問題を解決できることを願っています。

0
Saint

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変更要求を識別しますコミットごとに。

0
qneill

これを試して。 git Push --no-thin Origin xxxxxx:refs/for/sprint/yyyyyy

0
keylan