git.cmd vs git.exe - 有啥区别,应该使用哪一个?
Posted
技术标签:
【中文标题】git.cmd vs git.exe - 有啥区别,应该使用哪一个?【英文标题】:git.cmd vs git.exe - what is the difference and which one should be used?git.cmd vs git.exe - 有什么区别,应该使用哪一个? 【发布时间】:2012-02-15 08:33:42 【问题描述】:我有一个粗略的想法,git.cmd 只是一个包装器(但默认添加到 PATH),但我发现 git.exe 也可以正常工作,我打算将其用作issue 的解决方法(相反,关于 XP64 上的 chcp)。出于任何原因根本不建议这样做吗?另外,首先真的需要 git.cmd 吗?
注意:我所指的 chcp 问题不是由缺少 PATH 条目引起的,如 'chcp' is not recognized as an internal or external command, operable program or batch file. on a Windows PC 中的
【问题讨论】:
没有 git.cmd 这样的东西。至少在我使用的 2.19.0 版本中没有。文件夹 cmd\git.exe 中有一个 git-cmd.exe 和一个 git.exe 【参考方案1】:安装 msysgit 时有三个选项。
首先是PATH
上没有任何内容,而您拥有可以使用 Git Bash。
第二个是git.cmd
和gitk.cmd
被添加到PATH
中,这样你就可以在cmd、Powershell、cygwin等中使用它,而不会影响你在Windows上拥有的其他工具。 (这个git.cmd
是一个包装器,使您能够这样做,回答问题)。
第三个(我最喜欢的)是在PATH
中添加所有工具和git.exe
并使用它。这将影响 Windows 工具,您将能够使用 MSYS 附带的全套工具。
我一直使用第三个选项。我从未见过它对我的影响(我使用 Powershell 和 powershell cmdlet,从不使用标准的 Windows 命令)如果你喜欢这样并且想要 Mingw exe 供你使用,请选择第三个选项,你会很好。
【讨论】:
【参考方案2】:git.cmd
不再存在于当前版本的 msysgit(例如 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 版本与新的可执行包装器进行比较:
-
git.cmd
git.exe wrapper
你真的不需要担心这些魔法,只要明白你应该从除了 msysgit bash 环境之外的任何地方调用包装器。当您将 git 添加到安装程序中的路径时,它是添加的 Git\cmd 目录。我不建议将所有包含的实用程序添加到您的系统路径中,因为这会导致很多问题,尤其是如果您有其他 msys 或 cygwin 安装。在最近的记忆中我从未真正尝试过它,但我想它会将cmd
和bin
目录放在你的路径中,cmd
优先。
对我来说,新的 git.exe 包装器有一个巨大的优势:它使调用 git 的代码更具可移植性。以前,如果我编写了一个名为 git 的 python 脚本,我将不得不在 shell 环境中执行命令(subprocess.Popen()
和 shell=True
)或显式运行 cmd 文件。现在,无论操作系统如何,我都可以执行一个以“git”为名称的进程。这是因为 Windows 上的 CreateProcess() 不会执行批处理文件(.cmd
是 .bat
的别名),您需要调用 cmd.exe
来执行它。
【讨论】:
【参考方案3】:根据git for windows installer,您可以选择在安装过程中将 git.exe 添加到您的路径中。使用该选项应该没问题。
【讨论】:
那么说使用 git.cmd 暗示第一个选项是否正确? AFAIK 是的,如果您想在常规 cmd 提示符下使用 git.exe,我会选择第二个选项。以上是关于git.cmd vs git.exe - 有啥区别,应该使用哪一个?的主要内容,如果未能解决你的问题,请参考以下文章