Qué hacer, cuando se perdieron algunas referencias clave durante el empuje a Gerrit

2 minutos de lectura

avatar de usuario
trejder

Soy nuevo en Git e incluso más nuevo en Gerrit y me perdí un poco. Mi flujo de trabajo probablemente era estándar: crear una nueva rama, hacer el magiaconfirme los cambios, envíelos al repositorio de Gerrit.

Mi rama recién insertada es visible en la interfaz de usuario web de Gerrit, pero el cambio no es visible en absoluto.

Después de leer esta respuesta, documentos de Gerrit y muchos más, encontré fácil y rápidamente, que extrañaba mágico referencias En vez de git push origin HEAD:refs/for/{branch name} acabo de hacer git push origin.

¡Estupendo! Pero, ¿cómo recuperarse de esta situación? Cada vez que trato de empujar de nuevo, esta vez con los árbitros adecuados, obtengo ! [remote rejected] (no new changes).

¿Qué significa esto y qué puedo hacer? ¿Significa que no puedo arreglar esto de otra manera que no sea agregando nuevos cambios, comprometiéndolos y presionándolos nuevamente? (no, incluso empujar otro compromiso no resolvió el problema, Gerrit fusionó el nuevo empuje en el maestro, pero eliminó por completo el anterior; ¡esto está más allá de mi imaginación, desafortunadamente!)

  • Al enviar uno o más compromisos a refs/heads/branchname omite la revisión y envía los cambios directamente a la sucursal. A menos que esté en su propio pequeño patio de recreo local, no querer para “recuperarse” de esta situación, ya que cambiaría el historial de la rama rebobinando la rama a un estado anterior. Hacer eso es disruptivo para otras personas que trabajan en la misma rama, e incluso tener permisos para realizar esa operación es peligroso ya que es demasiado fácil cometer errores realmente dañinos.

    – Magnus Back

    16 de diciembre de 2013 a las 15:02

avatar de usuario
laplasz

Puede:

  • eliminar la rama remota por git push origin :<branch>,
  • eliminar el compromiso de la rama local git reset --soft HEAD^,
  • ocultar las modificaciones por git stash,
  • cree la sucursal remota con su sucursal local git push origin <branch>,
  • recuperar los cambios no confirmados por git stash pop,
  • cometerlo, y empujarlo a refs/for/<branch>.

  • tal vez el almacenamiento no sea necesario ya que el cambio no comprometido se mantendrá después de crear la rama remota

    – laplasz

    16 de diciembre de 2013 a las 10:39

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad