Encontré un comportamiento peculiar con git, y puedo reproducirlo cada vez en mi máquina.El uso de `git --git-dir/ruta/a/git pull/ruta/a/otro/bare-git maestro` no actualiza automáticamente el árbol de trabajo. Por qué no?
Si tengo dos repositorios locales, uno desnudo dentro de la carpeta express.git
, y el otro no-desnudo con un árbol de trabajo en el interior del expreso carpeta, ambos en la misma carpeta principal, que puede hacer el comando git pull ../express.git
desde el interior del express
carpeta. Esto actualiza automáticamente todo dentro de express
.
Sin embargo, si ejecuto el comando git --git-dir /home/cisw470p/stu006/express/.git pull /home/cisw470p/stu006/express.git master
desde una ubicación que no se encuentra en cualquiera de los repositorios de git, el repositorio express
generará cambios, pero no actualizará automáticamente el árbol de trabajo. Luego tengo que ejecutar git add .
para agregar todos los cambios y luego realizar otra confirmación desde adentro de express
y ahora todo está bien.
¿Por qué la versión larga del comando que utiliza la opción --git-dir no actualiza automáticamente el árbol de trabajo para express
? ¿Hay alguna razón para esto o encontré un error?
EDIT: Acabo de intentarlo de nuevo pero he editado un archivo diferente y ahora funcionó. Estoy completamente perdido.
¿Cómo esperas que git encuentre el árbol de trabajo con la forma larga? ¿Has intentado agregar el '-work-tree = ...' arg? –
Inside 'express' es el árbol de trabajo junto con la carpeta' .git', como un repositorio normal. – trusktr
Al darle a 'git' un git-dir explícito, ¿por qué esperas que asuma que el padre del directorio de git es un árbol de trabajo? Eso podría ser una suposición bastante peligrosa en muchos casos (en particular, si el dir del git es en realidad un repositorio desnudo) –