git con –git-dir = resulta en 'no es un repository git'

Tengo un script en una de mis aplicaciones de iOS que debería tener el hash de revisión de git y ponerlo en el número de versión. En este script, ejecuto git –git-dir = "$ PROJECT_DIR" show -s –pretty = format:% h para eso. Sin embargo, recibo el post de que el directory no es un repository git. Si hago eco de PROJECT_DIR var y voy al terminal, funciona lo siguiente:

cd projectDirPath git show -s --pretty=format:%h 

Lo que no funciona es:

 git --git-dir=projectDirPath show -s --pretty=format:%h 

¿Me estoy perdiendo de algo? La documentation indica que puedo especificar la ruta a un repository de git con –git-dir y obviamente la ruta especificada es un repository de git ya que todos los commands de git funcionan sin ningún problema si copio por primera vez en esa ruta. Sin embargo, si no estoy en este path, especifcar –git-dir no funciona.

Saludos, Michael

Al usar --git-dir , debe apuntar a la carpeta .git de su repository. Tratar:

 git --git-dir=projectDirPath/.git show -s --pretty=format:%h 

Yo solía tener un problema al recordar esto yo mismo. Para ayudarme a recordar qué hacer, trato de recordar que la opción está pidiendo exactamente lo que quiere: la ruta al directory .git (git-dir).

Además de --git-dir , también setting --work-tree puede ayudar. Para el script, es bueno usar entornos relevantes (es más fácil), por ejemplo

 #!/bin/bash -ex export GIT_WORK_TREE=/path/to/repo export GIT_DIR=/path/to/repo/.git git show -s --pretty=format:%h