Con svn, pude ejecutar comandos en archivos en un proceso de pago, sin tener cd
en ese pago primero Por ejemplo:¿Puedo realizar operaciones git (agregar/diferir/confirmar) en archivos en un repositorio cuando mi directorio actual no está en el repositorio
# Located in /tmp, running svn operation on /home/d5ve/checkout
[email protected]:/tmp> svn add /home/d5ve/checkout/myfile.txt
[email protected]:/tmp> svn diff /home/d5ve/checkout/myfile.txt
[email protected]:/tmp> svn commit /home/d5ve/checkout/myfile.txt
Cuando intento este flujo de trabajo utilizando git, me sale un error:
# Located in /tmp, attempting git operation on /home/d5ve/checkout2
[email protected]:/tmp> git add /home/d5ve/checkout2/myfile.txt
fatal: Not a git repository (or any of the parent directories): .git
He intentado usar las banderas --git-dir
y --work-tree
, sino que también parece fallar.
Cualquier sugerencia git people? Utilizo mucho este flujo de trabajo y realmente lo extraño cuando uso git.
ACTUALIZACIÓN 2016 La respuesta correcta actual para esto es utilizar la bandera -C
a GIT, que fue introducido en la versión 1.8.5 en 2013. Ver https://stackoverflow.com/a/35899275/357336
UPDATE: base en respuesta lunaryorn abajo, Creé un script simple de Perl que determina la ubicación del directorio .git a partir de las rutas de archivos, y establece las variables de entorno GIT_WORK_TREE y GIT_DIR para el comando.
favor, eche un vistazo a: http://github.com/d5ve/rgit
USO: COMANDO RGIT [ARGS]
Básicamente basta con sustituir git con RGIT en un comando, y se puede ejecutar los comandos desde fuera del repositorio .
cd /tmp
rgit diff /home/d5ve/checkout1
rgit add /home/d5ve/checkout1/rgit.pl
rgit commit /home/d5ve/checkout1/
Posible duplicado de [¿Cómo ejecuto un comando Git sin estar en la carpeta del repositorio?] (Http://stackoverflow.com/questions/7149984/how-do-i-execute-a-git-command-without -being-on-the-repository-folder) –