Estoy tratando de ejecutar git desde un directorio diferente al que estoy. Entonces, por ejemplo, si estoy en:
cd /home/domain/
git status << runs perfect ie
# On branch master
# Your branch is ahead of 'origin/master' by 6 commits.
Entonces ahora quiero ejecutar este comando desde un directorio diferente usando la --git-dir
opción
Así que digamos que estoy adentro root/
e intente esto:
git --git-dir="/home/domain/" status
## Error
fatal: Not a git repository: '/home/domain/'
También he tratado de incluir la .git
carpeta, es decir
git --git-dir="/home/domain/.git/" status
Pero parece que está tratando de ejecutar git desde la raíz, es decir, eliminar todo de mi carpeta de dominio y agregar todo en la raíz.
Espero que alguien pueda aconsejarme sobre lo que estoy haciendo mal.
--git-dir
y--work-tree
para un comando simple: vea mi respuesta a continuaciónRespuestas:
También debe definir el directorio de trabajo. Confuso lo sé, pero es una cuestión de flexibilidad.
Puedes leer un poco más aquí.
fuente
--git-dir
no se especifica, comprobaría si/mycode/.git
existiera y lo usaría antes de arrojar un error.git --git-dir=~/src/s3cmd/.git --work-tree=~/src/s3cmd pull
, no funcionó, perogit --git-dir=/home/username/src/s3cmd/.git --work-tree=/home/username/src/s3cmd pull
funcionógit --git-dir="$HOME/foo/.git" --work-tree="$HOME/foo" status
A partir de git 1.8.5 (que debería salir la próxima semana), será aún más simple:
No hay necesidad de configurar
--git-dir
y--work-tree
más!Ver commit 44e1e4 de Nazri Ramliy :
fuente
git status -C <path>
, ¡no funcionará!)Según su comentario anterior, parece que todavía tiene un problema:
Parece que podría tener la intención de ejecutar esto
crontab
o algo así. Puede que sea mejor usarlocd
para cambiar primero a su directorio de trabajo. Por ejemplo:Esto temporalmente (en una subshell, que es lo que hacen los paréntesis) cambiará el directorio actual
/home/domain
y luego se ejecutarágit pull origin master
. Una vez que se completa el comando, su directorio actual sigue siendo lo que era antes del comando.fuente
Con Git 2.26 (Q1 2020), la documentación es más clara.
Un efecto de especificar dónde
GIT_DIR
está (ya sea con la variable de entorno o con lagit --git-dir=<where> cmd
opción " ") es deshabilitar el descubrimiento del repositorio .Esto se ha puesto un poco más de estrés en la documentación, ya que los nuevos usuarios a menudo se confunden.
Ver commit d82ad54 (30 de enero de 2020) por Heba Waly (
HebaWaly
) .(Fusionada por Junio C Hamano -
gitster
- en commit 17e4a1b , 12 de febrero de 2020)Entonces la documentación por
git --git-dir
ahora incluye:fuente