¿Cómo ejecuto un comando de Git sin estar en el repositorio?

Resuelto Tower asked hace 13 años • 6 respuestas

¿Hay alguna manera de ejecutar comandos de Git en un repositorio sin estar en ese repositorio?

Por ejemplo algo como esto: git /home/repo log?

Por favor no me digas que cdlo haga. Estoy haciendo esto a través de una execllamada.

Tower avatar Aug 22 '11 22:08 Tower
Aceptado

Úselo -Ccomo primer argumento para git:

git -C /home/repo log

Según los documentos , el efecto de esto es:

-C <path>

Ejecute como si git se hubiera iniciado en <path>lugar del directorio de trabajo actual. ...

Esto es casi equivalente a --git-diry --work-treesin agregar la .gitcarpeta habitual. Sin embargo, las opciones --git-diry --work-treeno existen para acceder al repositorio desde fuera del árbol de trabajo; se utilizan para trasladar el .gitlugar a otro lugar y son mucho más complicados de usar en algunos casos.

Por ejemplo, para obtener el registro de /home/repo/subdirsólo:

git -C /home/repo/subdir log .

o

git -C /home/repo log subdir

No es posible utilizarlo log .con --git-diro --work-tree. La ruta debe procesarse para extraer la subruta relativa a la parte superior del árbol de trabajo, e incluso en ese caso, git no la reconocerá como una ruta si no usa la --opción, por lo que la única forma posible es:

git --git-dir /home/repo/.git log -- subdir

Además, --work-treeno funciona en absoluto con el logsubcomando de mi versión (git 1.9.1). Simplemente se ignora:

git --git-dir /home/repo/.git --work-tree /home/repo/subdir log -- subdir
git --git-dir /home/repo/.git --work-tree /home/repo/whatever log -- subdir

Ni siquiera entiendo si esto es un error o una característica... como es habitual con muchas opciones de diseño de git.

calandoa avatar Mar 09 '2016 18:03 calandoa

Intentar:

git --git-dir=/home/repo/.git log

Es importante proporcionar la ruta hasta el directorio .git de su repositorio. De lo contrario, sólo recibirá un mensaje de error que dice algo como:

fatal: Not a git repository
max avatar Aug 22 '2011 15:08 max