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

时间:2012-01-20 19:57:47

标签: windows git windows-xp msysgit

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

注意:我所指的chcp问题不是由issue

中缺少的PATH条目引起的

3 个答案:

答案 0 :(得分:25)

当前版本的msysgit中不再存在

git.cmd(例如1.8.0)。 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 wrapper
  3. 你真的不需要担心任何这种魔法,只要明白你应该从msysgit bash环境以外的任何东西调用包装器。将git添加到安装程序中的路径时,它是添加的Git \ cmd目录。我不建议将所有包含的实用程序添加到系统路径中,因为这会导致很多问题,尤其是如果您安装了其他msys或cygwin。我从来没有在最近的记忆中尝试过它,但我想它会将cmdbin目录放在你的路径中,cmd优先。

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

答案 1 :(得分:13)

安装msysgit时有三个选项。

  1. 首先,PATH没有任何内容, 使用Git Bash。

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

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

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

答案 2 :(得分:5)

根据git for windows installer,您可以选择在安装过程中将git.exe添加到路径中。使用该选项应该没问题。

Option screen to select git.exe