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

我有一个粗略的想法,git.cmd只是一个包装(但默认添加到PATH),但我发现,git.exe的作品,我打算用它作为解决这个问题的方法(相反的意见,关于XP64上的chcp)。 这会不会因为任何原因而被推荐? 另外,git.cmd真的需要在第一个地方?

注意:我所指的chcp问题不是由于缺lessPATH条目而造成的,因为在'chcp'中没有被识别为内部或外部命令,可操作的程序或batch file。 在Windows PC上

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

如果您查看%ProgramFiles(x86)%%ProgramFiles%中的Git目录,您将看到以下结构:

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

包装已经存在于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环境( shell=True subprocess.Popen()执行命令,或者显式运行cmd文件。 现在,我可以执行一个名为“git”的进程,而不管操作系统如何。 这是因为Windows上的CreateProcess()不会执行批处理文件( .cmd.bat的别名),您需要调用cmd.exe来执行它。

有三个选项,当你安装msysgit。

  1. 首先是什么都没有放在PATH ,你必须使用Git Bash。

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

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

我一直使用第三个选项。 我从来没有看到它是如何影响我的(我使用Powershell和PowerShell cmdlet,从来没有标准的Windows命令)如果你是这样的,你想Mingw exes在你的处置,去第三个选项,你会很好。

根据git的Windows安装程序,您可以选择在安装过程中将git.exe添加到您的路径。 你应该没问题,使用这个选项。

选项屏幕选择git.exe