tipos tener tag sirve qué proyecto podemos para oneline nuestros nos mayor log herramienta hacer hace existen etiquetas eliminar cuando crear creamos control git version-control

tener - ¿Qué es este mensaje de advertencia de Git cuando se realizan cambios en un repositorio remoto?



¿qué hace git log-oneline? (3)

En realidad, significa más o menos exactamente lo que dice: alguien está trabajando en el repositorio al que está presionando, y que alguien actualmente ha comprobado exactamente la misma rama a la que está presionando.

Esto es muy confuso, porque ahora él piensa que ha revisado la última versión de la sucursal, cuando, de hecho, acaba de actualizar la sucursal a una versión más nueva. Entonces, cuando ahora ejecuta la git commit , su compromiso básicamente revertirá todas las confirmaciones que acaba de lanzar. Y cuando ejecute git diff , verá lo contrario de todo lo que acaba de empujar, a pesar de que tal vez ni siquiera ha cambiado nada.

Por esa razón, generalmente se considera una mala práctica ingresar a un repositorio no vacío; solo deberías empujar hacia depósitos vacíos, es decir, repositorios que no tienen una copia de trabajo adjunta. Por lo menos, debes asegurarte de no presionar a la rama actualmente desprotegida, pero en general no debes simplemente meter tu código en el repositorio de otra persona, sino que debes pedirle que te retire.

En algunos casos especiales, como cuando está prestando servicios en un sitio web desde un repositorio de Git y desea actualizar el sitio web presionándolo, en realidad tiene sentido enviarlo a la sucursal actualmente prestada, pero en ese caso debe asegurarse que tiene un gancho instalado que realmente actualiza la copia de trabajo desprotegida; de lo contrario, su sitio web nunca se actualizará.

La descripción es un poco escueta. Simplemente agregué un archivo en mi rama maestra local y lo devolví a un repositorio remoto. ¿Alguna idea de por qué viene esto?

warning: updating the current branch warning: Updating the currently checked out branch may cause confusion, warning: as the index and work tree do not reflect changes that are in HEAD. warning: As a result, you may see the changes you just pushed into it warning: reverted when you run ''git diff'' over there, and you may want warning: to run ''git reset --hard'' before starting to work to recover. warning: warning: You can set ''receive.denyCurrentBranch'' configuration variable to warning: ''refuse'' in the remote repository to forbid pushing into its warning: current branch. warning: To allow pushing into the current branch, you can set it to ''ignore''; warning: but this is not recommended unless you arranged to update its work warning: tree to match what you pushed in some other way. warning: warning: To squelch this message, you can set it to ''warn''. warning: warning: Note that the default will change in a future version of git warning: to refuse updating the current branch unless you have the warning: configuration variable set to either ''ignore'' or ''warn''.


Este es el mismo problema que esta pregunta , la solución es usar git init --bare o git clone --bare .


Si nadie está trabajando en ese repositorio remoto no desnudo, entonces debería ser posible enviarlo a una sucursal desprotegida.

Pero para estar más seguro en esa operación, ahora puede (con Git 2.3.0, febrero de 2015), hacer en ese repositorio remoto:

git config receive.denyCurrentBranch updateInstead

Es más seguro que la configuración receive.denyCurrentBranch=ignore : permitirá la inserción solo si no está anulando la modificación en curso.

Ver commit 1404bcb por Johannes Schindelin ( dscho ) :

receive-pack : agregue otra opción para receive.denyCurrentBranch

Al sincronizar directorios de trabajo, puede ser útil actualizar la rama actual mediante '' push '' en lugar de '' pull '', por ejemplo, cuando se inserta una solución desde dentro de una VM o cuando se aplica una solución en la máquina del usuario (donde el desarrollador está no tiene la libertad de instalar un daemon ssh y mucho menos saber la contraseña del usuario).

La solución común - empujar en una rama temporal y luego fusionarse en la otra máquina - ya no es necesaria con este parche.

La nueva opción es:

updateInstead

Actualice el árbol de trabajo en consecuencia, pero se niega a hacerlo si hay cambios no confirmados.

La confirmación 4d7a5ce agrega más pruebas y menciona:

El anterior prueba solo el caso en el que una ruta que se actualizará mediante el comando push-to-deploy tiene un cambio incompatible en el árbol de trabajo del objetivo que ya se ha agregado al índice, pero la característica en sí misma requiere que el árbol de trabajo esté mucho más limpio que lo que se prueba.

Agregue un puñado de más pruebas para proteger la función de los cambios futuros que, por error (desde el punto de vista del inventor de la función), reducen el requisito de limpieza, a saber:

  • Un cambio solo en el árbol de trabajo pero no en el índice sigue siendo un cambio que se debe proteger;
  • Un archivo no rastreado en el árbol de trabajo que se sobrescribirá mediante un comando push-to-deploy debe estar protegido;
  • Un cambio que hace que un archivo sea idéntico a lo que se está empujando sigue siendo un cambio que se debe proteger (es decir, el requisito de limpieza de la función es más estricto que el de pago).

Además, compruebe que un cambio de solo estadística en el árbol de trabajo no es motivo para rechazar un empuje para implementar.