git.cmd vs git.exe - 有什么区别,应该使用哪一个?

pru*_*wan 22 windows git windows-xp msysgit

我有一个粗略的想法,git.cmd只是一个包装器(但默认添加到PATH),但我发现git.exe也可以工作,我打算用它来解决这个问题(对它的评论) ,关于XP64上的chcp).不建议出于任何原因吗?另外,首先真的需要git.cmd吗?

注意:我所指的chcp问题不是由丢失的PATH条目引起的,因为'chcp'不被识别为内部或外部命令,可操作程序或批处理文件.在Windows PC上

djs*_*djs 25

git.cmd当前版本的msysgit中不再存在(例如1.8.0).git.cmd是一个包装,已被一个新的包裹所取代git.exe.这不应与实际相混淆git.exe.

如果你看看在Git的目录%ProgramFiles(x86)%或者%ProgramFiles%,你会看到如下的结构:

Git
|-- bin
|   |-- git.exe
|-- cmd
    |-- git.exe
Run Code Online (Sandbox Code Playgroud)

包装器已经存在于msysgit中很长一段时间,以便正确设置从cmd.exe使用git的环境.如果您使用包含的bash shell,它将直接运行git.exe.

您可以在此处将旧cmd版本与新的可执行文件包装器进行比较:

  1. git.cmd
  2. git.exe包装器

你真的不需要担心任何这种魔法,只要明白你应该从msysgit bash环境以外的任何东西调用包装器.将git添加到安装程序中的路径时,它是添加的Git\cmd目录.我不建议将所有包含的实用程序添加到系统路径中,因为这会导致很多问题,尤其是如果您安装了其他msys或cygwin.我从来没有在最近的内存中尝试过它,但我想它会把你和路径中的两个cmdbin目录放在一起cmd,优先考虑.

对我来说,新的git.exe包装器有一个巨大的优势:它使得调用git的代码更具可移植性.以前,如果我编写了一个调用git的python脚本,我将不得不使用shell环境(subprocess.Popen()with shell=True)执行该命令,或者显式运行cmd文件.现在,无论操作系统如何,我都可以使用'git'作为名称执行进程.这是因为Windows上的CreateProcess()不会执行批处理文件(.cmd是别名.bat),您需要调用cmd.exe它来执行它.


man*_*lds 13

安装msysgit时有三个选项.

  1. 首先是没有任何东西PATH,你必须使用Git Bash.

  2. 第二个是,git.cmdgitk.cmd被添加到PATH让你可以在cmd中使用它,PowerShell中,在cygwin等,而不会影响您在Windows其他工具.(这git.cmd是一个包装器使你能够这样做,回答这个问题).

  3. 第三个(我的最爱)是添加的所有工具,并且git.exe,在PATH和使用这个.这将影响Windows工具,您将能够使用MSYS附带的全套工具.

我一直使用第三种选择.我从来没有见过它如何影响我(我使用Powershell和powershell cmdlet而且从不使用标准的Windows命令)如果你是这样的,你想要Mingw exes随意使用,那么选择第三个选项就可以了.


Dev*_*n M 5

根据Windows安装程序git,您可以选择在安装过程中将git.exe添加到路径中.你可以使用该选项.

选项屏幕,用于选择git.exe