Git push remote rejected {change ### closed}

Tengo problemas para transferir mis cambios de mi maestro local a maestro remoto debido a este error:

remote: Processing changes: refs: 1, done To ssh://xxxxx@gerrit.dev.xxxxx.net:29418/xxxxxx ! [remote rejected] HEAD -> refs/for/master (change 14823 closed) error: failed to push some refs to 'ssh://xxxxx@gerrit.dev.xxxxx.net:29418/xxxxxx' 

alguna idea de cómo puedo solucionar este problema?

El estado de git dice que mi sucursal está por delante del origen / maestro por 5 commits.

Recibí el mismo post. Y fue porque he logrado get el mismo ID de cambio para dos confirmaciones. Tal vez debido a una recolección de cerezas o similar entre mis sucursales locales. Resuelto al eliminar el ID de cambio del post de confirmación, se agregó un nuevo Id por el enlace de confirmación.

Encontré la siguiente página que detalla exactamente por qué no puede enviar sus cambios al origen debido al error de cambio XXXXX cerrado: https://git.eclipse.org/r/Documentation/error-change-closed.html

¡Aclamaciones!

Su ID de cambio de compromiso ha caducado, es decir, la Revisión 14823 está cerrada. no puedes empujar a lo mismo.

Haga esto para solucionar el problema:

  1. git commit --amend
  2. eliminar el ID de cambio
  3. save y Salir
  4. Se agregará una nueva identificación de cambio a la confirmación. puede ser verificado por git log.
  5. empujar de nuevo

Tienes 5 commits.

Todos ellos tienen un file llamado "Mensaje de confirmación" (utilizado por Gerrit).
Uno de estos files tiene un "ID de cambio" malo que ya fue aceptado
y se fusionó en el maestro por Gerrit, y por lo tanto no se puede usar de nuevo.

Una solución es fusionar los 5 commit en uno,
y en el process de hacer eso,
elimine el "ID de cambio" en el file "Mensaje de confirmación".

En mi caso, tuve 3 commits, así que lo hice:
git rebase -i HEAD ~ 3

Hay otras forms de fusionar varias confirmaciones:
Aplaste mi última X se compromete con Git

El post change 14823 closed no viene de vanilla git . Indica que quien mantiene ese repository tiene una actualización o gancho post-actualización que está evaluando su impulso y rechazándolo debido a la política local (supongo que está agregando compromisos adicionales a un problema que ya se ha marcado como completado / cerrado ) Tendrá que averiguar cuáles son esas políticas y si necesita reabrir de alguna manera el cambio para que pueda agregar compromisos, o si necesita crear una nueva request de cambio y (probablemente) rebase su trabajo contra eso.

El estado de git dice que mi sucursal está por delante del origen / maestro por 5 commits.

Todo lo que hago es search el último código. haciendo algunos ajustes y empujándolo.

¿Cuáles son esos 5 commits? ¿Son todos tuyos?

¿El cambio 14823 corresponde a uno de esos 5 commits? ¿Cuál es su estado en Gerrit?

Estás presionando a gerrit, que es una herramienta de revisión de código, como lo indican tanto la url (ssh: //xxxxx@gerrit.dev.xxxxx.net: 29418 / xxxxxx) como la "HEAD -> refs / for / master" "post" Debe consultar con quienquiera que mantenga el repository que está intentando impulsar para descubrir por qué se rechaza el cambio.

Prueba esto. git push –no-thin origen xxxxxx: refs / for / sprint / aaaaaa

Mi hijo y yo trabajamos más de 1 hora para get una solución, así que lo intenté a continuación. Funciona para mí

  1. Copia de security de todas las twigs de la carpeta .git / logs / refs / heads / {{branch}} y de los files actualizados en el repository
  2. Se eliminaron las sucursales que causaban un error
  3. Crear una twig "git branch" {{new branch name}} '"
  4. mover los files repo a la carpeta relevante
  5. git commit -m "{{commit message}}"
  6. git push origen HEAD: refs / for / master

Todo debería estar bien y bien hecho

en mi caso tuve 2 commits, el primer commit fue mío pero el segundo no, así que lo soluciono de esta manera:

  1. averiguar qué files se comprometieron en el cambio 14823
  2. encuentra tu confirmación más antigua y haz un restablecimiento suave a su padre. tenga en count que si realiza un restablecimiento completo, puede perder todas sus confirmaciones.
  3. intenta comprometer tus cambios una vez más, pero en este momento sin los files del cambio 14823

Espero que sea útil.

Me encuentro con este problema también, cuando presiono mi confirmación y la terminal dice:

! [remote rechazado] HEAD -> refs / for / android_ui.lnx.1.2.c1-dev (cambio 1692698 cerrado)

Voy a revisar el sitio para ver el cambio correspondiente al 1692698, el post de confirmación es: "Avisarme de la ayuda de anclaje del USB cuando active por primera vez el host de WiFi"

Luego, muestre los loggings de confirmación en la terminal:

  • b49c0f91744cb6f863616976c4fb4157c7af4b8c El aviso no es correcto cuando se habilita el anclaje a networking de USB con Wi-Fi conectado.
  • eb47ef919064aff516ced4bbd9d8ade0ed34b107 Solicitar ayuda de anclaje de USB cuando se activa por primera vez el host de WiFi
  • 753668be1207baa514be1bbd985f3db2d6317608 Reparar hotstop Error de notificación.

La razón por la que falla el envío es que el cambio actual es el mismo que el de eb47ef919064aff516ced4bbd9d8ade0ed34b107 commit. así que hago una copy de security del cambio actual y reinicio duro a 753668be1207baa514be1bbd985f3db2d6317608 y luego aplico el cambio de copy de security, agrego, confirmo y presiono sucesivamente finalmente.

Espero que esto pueda resolver tu problema.

Esto puede suceder si ya existe un cambio en gerrit que se ha fusionado o incluso abandonado. Si se abandona, que era mi caso, restaure ese cambio en gerrit y aplique el nuevo cambio sobre el cambio restaurado.

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

Tienes 5 commits.

Cada confirmación tiene un "Mensaje de confirmación" que puede contener una cadena "Change-Id:" que identifica a qué request de cambio pertenece la confirmación de Gerrit (consulte https://git.eclipse.org/r/Documentation/user-changeid. html )

En este caso, una (o más) de las Peticiones de cambio identificadas por las cadenas de Id. De cambio ya está fusionada o abandonada por Gerrit y, por lo tanto, no pueden volver a utilizarse.

Debe modificar el post de confirmación para uno (o más) de los commits antes de presionarlos (ver http://schacon.github.io/history.html ), eliminándolos para crear nuevas requestes de cambio o modificándolos para que identifican las Solicitudes de cambio de Gerrit correctas para cada compromiso.

Solución para usuarios de EGit:

  1. Haz clic en el button Modificar enter image description here

  1. Eliminar Change-Id del área de post de confirmación con el button de retroceso (esto será algo diferente de esta captura de pantalla)
  2. Haga clic en el button 'Agregar ID de cambio' enter image description here

  3. Confirme sus cambios y presione.

Esto debería hacerlo:

 git commit --amend 

Elimine la identificación de cambio y luego presione para revisarla.