Empujar confirmaciones vacías a control remoto

242

He enviado una confirmación a control remoto, pero ahora me di cuenta de que el mensaje de confirmación no es correcto. Me gustaría cambiar el mensaje de confirmación, pero AFAIK no es posible. Así que decidí crear una confirmación vacía con el mensaje correcto:

git commit --allow-empty

¿Hay alguna desventaja / consecuencia de empujar compromisos vacíos? ¿Hay algún problema que pueda enfrentar en el futuro debido a esta confirmación vacía?

mrutyunjay
fuente
1
Compruebe esta pregunta similar stackoverflow.com/questions/6218199/…
Montaro

Respuestas:

80

No enfrentarás ninguna consecuencia terrible, solo la historia parecerá un poco confusa.

Usted podría cambiar el mensaje de confirmación al hacer

git commit --amend
git push --force-with-lease # (as opposed to --force, it doesn't overwrite others' work)

PERO esto anulará el historial remoto con el tuyo, lo que significa que si alguien retiró ese repositorio mientras tanto, esta persona se enojará mucho contigo ...

Solo hazlo si eres la única persona que accede al repositorio.

Gabriele Petronella
fuente
55
Sí, es por eso que prefiero presionar empty-commit
mrutyunjay
44
@mrutyunjay si existe la posibilidad de que otras personas tomen el repositorio, entonces sí, creo que es una mejor opción.
Gabriele Petronella
1
No enfrentarás ninguna consecuencia terrible, solo la historia parecerá un poco confusa , ¡qué terrible consecuencia! ;-)
Alois Mahdal
3
Prefiero --force-with-leaseevitar perder el trabajo de los colaboradores.
Kenzo
22

empujar commits, ya sea vacío o no, hace que se activen eventuales ganchos git. Esto no puede hacer nada o tener consecuencias mundiales devastadoras.

xor
fuente
99
Esta es una observación subestimada. Sí, las confirmaciones vacías pueden ser superiores a la modificación de las confirmaciones enviadas, pero no se puede suponer que están libres de efectos secundarios si puede haber ganchos en su lugar.
wintermute92
18

¿Hay alguna desventaja / consecuencia de empujar commits vacíos?

Aparte de la extrema confusión que alguien podría tener sobre por qué hay un montón de confirmaciones sin contenido en ellas en master, en realidad no.

Usted puede cambiar el commit que empujó a distancia, pero el SHA1 del commit (Básicamente se trata de número de identificación) va a cambiar de forma permanente, lo que altera la estructura de directorios - Será entonces tiene que hacer una git push -fvuelta a distancia.

yamafontes
fuente
15

Siempre que haga referencia clara al otro commit del commit vacío, debería estar bien. Algo como:

Commit message errata for [commit sha1]

[new commit message]

Como otros han señalado, esto a menudo es preferible a forzar un compromiso corregido.

153957
fuente
12
 $ git commit --allow-empty -m "Trigger Build"
sarjit07
fuente
2
Si bien este código puede resolver la pregunta, incluir una explicación de cómo y por qué esto resuelve el problema realmente ayudaría a mejorar la calidad de su publicación, y probablemente resultaría en más votos positivos. Recuerde que está respondiendo la pregunta para los lectores en el futuro, no solo la persona que pregunta ahora. Por favor, editar su respuesta para agregar explicaciones y dar una indicación de lo que se aplican limitaciones y supuestos. De la opinión
doble pitido
-1

¿Qué hay de esto?

 git commit --allow-empty-message -m ''
David Okwii
fuente
Simplemente eliminó el mensaje y eso empeora aún más si una confirmación va a estar vacía, al menos debería haber un mensaje de por qué.
Eric Bishard