Git / gerrit, push remote rechazado sin cambios realizados

Se realizaron cambios en una confirmación, se llevó a cabo una confirmación. Haz un push y obtengo el error:

! [remote rejected] master -> refs/for/master (no changes made) 

Comtesting el ID de cambio en el post de confirmación y sigue siendo una confirmación válida.

Intenté cambiar un file, verificándolo aparece como una alteración y luego lo agregué al área de preparación y realicé otra enmienda de confirmación. Intenta presionar nuevamente y get el mismo problema. No tengo idea de esto.

Editar: Esto está presionando a Gerrit, no directamente.

Estoy corriendo:

 git push origin master:refs/for/master 

Y el resultado de get los detalles de origen es (con los detalles de la empresa editados):

 $ git remote show origin * remote origin Fetch URL: ssh://lytee@gerrit.mycompany.net:29418/myrepo Push URL: ssh://lytee@gerrit.mycompany.net:29418/myrepo HEAD branch: master Remote branch: master tracked Local branch configunetworking for 'git pull': master rebases onto remote master Local ref configunetworking for 'git push': master pushes to master (up to date) 

Este problema se debe a las acciones que había realizado anteriormente. Estaba tratando de push un cambio nuevo, además de un cambio que todavía estaba pendiente de revisión, y el padre también estaba pendiente de revisión.

  Trunk ------ Parent A ----- Parent B ----- New change (merged) (unmerged) (unmerged) 

Había usado cherry-pick para get estos dos cambios localmente (Parent A y Parent B), y luego un tercer cherry-pick para get mi cambio de una sucursal local antes de intentar push . Eso es lo que causó el problema, porque mi cambio personal esencialmente estaba intentando volver a escribir el historial.

El process correcto sería solo pull primario B cuando esté en el tronco. Esto automáticamente detiene cualquier commit entre trunk y it (en este caso solo Parent A). Luego cherry-pick mi nuevo cambio además de eso y push funcionará bien.

Parece que está haciendo todo lo correcto en cuanto a verificar que ha realizado un cambio que Gerrit debería retomar.

git push origin master:refs/for/master

¿Tal vez éste es el problema? Si sus cambios no están en su versión local de la twig principal, no está presionando sus cambios. En cambio, intente:

git push origin HEAD:refs/for/master

HEAD es un atajo que representa tu compromiso actual en git.

Si está tratando de actualizar un set de revisiones, cada una con su ID de cambio que desea mantener (por ejemplo, después de una rebase donde intercambia el order de dos confirmaciones), puede ser rechazado si algunas de las confirmaciones en el stack permanece sin cambios. Debería forzar que se genere un nuevo hash volviendo a networkingactar los commit, o algo similar.

Por favor, consulte la documentation oficial sobre este tema aquí:

https://gerrit-review.googlesource.com/Documentation/error-no-new-changes.html

Tuve el mismo problema, mi problema fue que presioné el cambio, luego abandoné esa fusión, luego hice algunos ajustes, enmendando incorrectamente mi compromiso y empujé nuevamente. Ahí es donde obtuve el error.

Mi solución:

  1. Si solo quieres git commit --amend este problema rápidamente, haz git commit --amend , elimina el change-Id existente, asumiendo que tienes los ganchos de git configurados, puedes terminar el commit y se te debe asignar un nuevo change-Id .
  2. Vaya a Gerrit y busque su change-Id existente, descubra qué está sucediendo y corrija en consecuencia. (recomendado)

Tuve el mismo problema. Al mismo time, había otra confirmación no fusionada para master y estaba en gerrit review y rebase en gerrit. es decir, código presionado para su revisión. rebasado en gerrit y revisión pendiente de terminar. Una vez que se revisó el código, pude presionar sin error.

Tuve el mismo post de error, pero los cambios que intentaba realizar se sumron a los diferentes compromisos del set de cambios original (hice algunos trucos de magia con git cherry-pick y parece que a Gerrit no le gustó). Abandoné mi cambio original, luego lo volví a abrir cuando me di count de que podía solucionar el problema, pero no pude enviarlo a gerrit con la git review .

En este punto, mi solución rápida fue abandonar el cambio original del website de Gerrit, y crear un nuevo cambio eliminando la última línea del change-Id: sha1 del post de confirmación con la git commit --amend .

Con este post de error, Gerrit rechaza enviar un compromiso como un nuevo set de parches para un cambio, si el compromiso enviado es idéntico al set de parches actual de este cambio.

Una confirmación push se considera idéntica al set de parches actual si

  • los files en la confirmación,
  • el post de compromiso,
  • el autor del compromiso y
  • los padres de la comisión

son todos idénticos.