2012-01-20 3 views
21

Tengo una idea aproximada de que git.cmd es solo un contenedor (pero agregado a PATH de forma predeterminada), pero me enteré de que git.exe funciona también y tengo la intención de utilizarlo como una solución a este issue (comentarios a más bien, con respecto a chcp en XP64). ¿No sería recomendable por alguna razón? Además, ¿es realmente necesario git.cmd en primer lugar?git.cmd vs git.exe: ¿cuál es la diferencia y cuál debería usarse?

Nota: El tema chcp Me refiero a que no es causada por desaparecidos entradas de ruta como en 'chcp' is not recognized as an internal or external command, operable program or batch file. on a Windows PC

Respuesta

23

git.cmd ya no existe en las versiones actuales de msysgit (por ejemplo, 1.8.0). git.cmd era una envoltura que ha sido reemplazada por una nueva envoltura llamada git.exe. Esto no debe confundirse con el git.exe real.

Si se echa un vistazo en el directorio de Git en %ProgramFiles(x86)% o %ProgramFiles%, verá la siguiente estructura:

Git 
|-- bin 
| |-- git.exe 
|-- cmd 
    |-- git.exe 

La envoltura ha existido en msysgit durante mucho tiempo con el fin de establecer adecuadamente el entorno para usar git desde cmd.exe. Si está utilizando el shell bash incluido, ejecutará git.exe directamente.

Puede comparar la vieja versión cmd con el nuevo envoltorio ejecutable aquí:

  1. git.cmd
  2. git.exe wrapper

que realmente no tiene que preocuparse por ninguna de esta magia, simplemente entiendo que debe llamar al contenedor desde cualquier cosa que no sea el entorno msysgit bash.Cuando agrega git a la ruta en el instalador, se agrega el directorio Git \ cmd. No recomiendo agregar todas las utilidades incluidas a la ruta del sistema, ya que esto puede causar muchos problemas, especialmente si tiene otras instalaciones de msys o cygwin. Nunca lo he intentado en la memoria reciente, pero me imagino que coloca los directorios cmd y bin en su ruta, con cmd teniendo prioridad.

Para mí, hay una gran ventaja en el nuevo contenedor git.exe: hace que el código que llama a git sea más portátil. Anteriormente, si escribía un script de python que llamaba a git, tenía que ejecutar el comando con un entorno de shell (subprocess.Popen() con shell=True) o ejecutar el archivo cmd de forma explícita. Ahora, puedo ejecutar un proceso con 'git' como nombre, independientemente del sistema operativo. Esto es porque CreateProcess() en Windows no ejecutará un archivo por lotes (.cmd es un alias para .bat), necesita invocar cmd.exe para ejecutarlo.

5

De acuerdo con la git for windows installer usted tiene la opción de añadir git.exe a su trayectoria durante la configuración. Deberías estar bien usando esa opción.

Option screen to select git.exe

+0

así que ¿es correcto decir que el uso de git.cmd hace alusión a la primera opción? – prusswan

+0

AFAIK Sí, elegiría la segunda opción si desea utilizar git.exe desde el indicador de cmd habitual. –

13

Hay tres opciones a la hora de instalar msysgit.

  1. La primera es que nada se ponga en PATH y tener usar Git Bash.

  2. La segunda es que git.cmd y gitk.cmd se añaden a PATH para que pueda utilizarlo en cmd, Powershell, etc. CygWin sin afectar a otras herramientas que tienes en Windows. (Este git.cmd es un contenedor que le permite hacer esto para responder la pregunta).

  3. El tercero (mi favorito) es agregar todas las herramientas, y git.exe, en PATH y usar esto. Esto afectará a las herramientas de Windows y podrá usar el conjunto completo de herramientas con el que viene MSYS.

Siempre he usado la tercera opción. Nunca he visto cómo me afecta (uso los cmdlets Powershell y PowerShell y nunca los comandos estándar de Windows). Si usted es así y quiere Mingw exes a su disposición, vaya a la tercera opción y estará bien.

Cuestiones relacionadas