2009-04-10 16 views
32

Cuando hago un git push, veo lo siguiente:¿Qué significa la advertencia de git "actualizando la ramificación comprobada"?

warning: updating the currently checked out branch; this may cause confusion, 
as the index and working tree do not reflect changes that are now in HEAD. 

Busqué en Google para este mensaje, y todo lo que puedo encontrar es un git mailing list discussion donde los autores tratan de decidir exactamente cómo hacer este mensaje mejor comunicar para mí cuál es el verdadero problema.

¿Cómo causé esto y cómo lo soluciono?

+2

posible duplicado de [Error de inserción de Git '\ [remoto rechazado \] maestro -> maestro (la rama está actualmente desprotegida)'] (http://stackoverflow.com/questions/2816369/git-push-error-remote -rejected-master-master-branch-is-currently-checked) –

+1

@WilliamTate no, esta publicación trata de una advertencia, la publicación vinculada se ocupa del error – CharlesB

+2

Sí, creo que es la advertencia que recibiste en lugar del error en anteriores versiones de Git. –

Respuesta

46

Esto sucede cuando empuja a un repositorio no descubierto. Un repositorio simple es uno que consiste únicamente en un directorio .git; un repositorio no desnudo también incluye un pago y envío. En general, no debe presionar a un repositorio no descubierto; de hecho, en la versión futura de git, eso estará prohibido. Si presiona para un repositorio no vacío, entonces el HEAD de ese repos no estará sincronizado con el índice y la copia de trabajo.

Si va a crear un acuerdo de recompra que la gente va a querer empujar a, entonces usted debe crearlo utilizando git init --bare (y git init --bare --shared si varias cuentas de usuario tienen acceso a ella), o git clone --bare si va a crear por clonando un repositorio existente.

+1

Gracias. Esta importante advertencia me decía que me clonaron y me llevaron al repositorio equivocado. Tengo un repositorio desnudo, nombrado de manera similar a otro repositorio que accidentalmente cloné! – skiphoppy

+1

¿Está bien pasar de un depósito no desnudo a uno no desnudo? ¿Supongo que no? – Keyo

+1

@Keyo Sí, está bien pasar de un repositorio no descubierto a otro. Pero no deberías empujar a un repositorio no descubierto. –

12

En resumen, su repositorio remoto ya no es simple, y está presionando en la rama de pago remoto.

Ver "How to publish a Git repository":

Un repositorio desnudo es aquel que no tiene copia de trabajo obtenida del código. Solo contiene la base de datos git.
Como regla general, nunca debe ingresar a un repositorio que contenga cambios en la copia de trabajo.
Para garantizar que esto no suceda, estamos haciendo el depósito del servidor de un repositorio desnudo - no tiene copia de trabajo

De here:

Tenga en cuenta que el objetivo de un "push" es normalmente un repositorio descubierto (es decir, sin árbol de trabajo propio).
También puede acceder a un repositorio que tiene un árbol de trabajo desprotegido, pero el árbol de trabajo no se actualizará con la inserción.
Esto puede provocar resultados inesperados si la rama a la que presiona es la sucursal que está actualmente prestada.

Si se define un árbol de trabajo individual (que puede por ejemplo corresponder a DocumentRoot de un servidor web), es necesario:

Comprobar, en su repositorio remoto, el valor de git config core.worktree y git config core.bare

+1

Nota para mí: vea http://stackoverflow.com/questions/2041823/2041865#2041865 para ver un ejemplo de uso de repos repo. – VonC

5

Hice mi repositorio al descubierto clonando un nuevo repositorio desnudo de mi desordenados, guardando el desordenado por si acaso, y reemplazándolo con mi clonado desnudo.

Soy nuevo en git, y cuando configuré el repositorio, olvidé usar la opción --bare. ¡Gracias por toda tu ayuda!

He leído el libro de O'Reilly git y ahora soy un convertido total de git.

Cuestiones relacionadas