git.cmd 与 git.exe - 有什么区别以及应该使用哪一个?

2023-12-30

我粗略地认为 git.cmd 只是一个包装器(但默认添加到 PATH 中),但我发现 git.exe 也可以工作,我打算用它作为解决方法issue http://code.google.com/p/msysgit/issues/detail?id=358(关于 XP64 上的 chcp 的评论)。出于任何原因根本不推荐这样做吗?另外,git.cmd 真的需要吗?

注意:我提到的 chcp 问题不是由缺少 PATH 条目引起的,如“chcp”不被识别为内部或外部命令、可操作程序或批处理文件。在 Windows 电脑上 https://stackoverflow.com/questions/8142058/chcp-is-not-recognized-as-an-internal-or-external-command-operable-program-or


git.cmd当前版本的 msysgit 中不再存在(例如 1.8.0)。git.cmd是一个包装器,已被一个名为的新包装器取代git.exe。这不要与实际情况混淆git.exe.

如果你看一下 Git 目录%ProgramFiles(x86)% or %ProgramFiles%,您将看到以下结构:

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

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

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

  1. git.cmd https://github.com/msysgit/msysgit/blob/Git-1.7.9-preview20120201/cmd/git.cmd
  2. git.exe 包装器 https://github.com/msysgit/msysgit/blob/master/src/git-wrapper/git-wrapper.c

您实际上不需要担心任何这种魔法,只需了解您应该从除 msysgit bash 环境之外的任何地方调用包装器即可。当您将 git 添加到安装程序中的路径时,会添加 Git\cmd 目录。我不建议将所有包含的实用程序添加到系统路径中,因为这可能会导致很多问题,特别是如果您安装了其他 msys 或 cygwin。我最近从未真正尝试过它,但我想它既可以cmd and bin路径中的目录,其中cmd优先。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git.cmd 与 git.exe - 有什么区别以及应该使用哪一个? 的相关文章

  • .gitignore 文件夹内容[重复]

    这个问题在这里已经有答案了 可能的重复 在 Windows 上忽略 Git 存储库中的目录 https stackoverflow com questions 343646 ignoring directories in git repos
  • 无法将 android“gen”文件夹提交到 Git

    我在 eclipse 中使用 EGit 为我正在开发的 Android 项目提供 Git 支持 问题是 将我的项目提交到本地存储库后 我意识到 gen 文件夹没有被提交 因此 当我从 Git 存储库获取最新源代码后尝试在另一台计算机上打开该
  • 如何通过 DOS 批处理命令发送电子邮件?

    我在 DOS 中有一个批处理文件 可以进行一些检查 完成后我需要发送一封电子邮件 我在 interwebz 上找到了一些解决方案 但大多数都是第三方的 或者只是在 Outlook 中打开新邮件 我需要命令来发送完整的电子邮件 而无需任何人工
  • 来自 eclipse 的部分 git 提交 (egit)

    假设我有一个有 2 个更改的文件 如何使用 egit 只提交其中之一 命令行版本可以在以下位置找到this https stackoverflow com questions 1085162 commit only part of a fi
  • 如何损坏 Git 存储库?

    创建损坏的 git 存储库有哪些方法 有没有有趣的方法可以永久损坏 git 存储库 你能否削弱一个 git 存储库 使其行为有些正常 但会做一些奇怪的事情 我的兴趣来自于当有人担心他们是否真的创建了不可恢复的状态时 它通常很容易修复或至少可
  • “git rm --cached”、“git Restore --staged”和“git reset”之间有什么区别

    我遇到了以下三种方法来取消暂存由命令 git add 暂存的文件 git rm cached
  • 在 git 提交消息中使用任何 utf-8 字符是否安全?

    我发现使用 UTF8 字符 例如 很有用 请参阅here http www utf8icons com subsets dingbats 在提交消息中 重构 NewService 添加了更好的服务 OldServiceA 据我所见 它see
  • 如何获取第一次提交的 Git diff?

    我创建了一个存储库 在其中创建了一个文件 在文件中放入了一些内容 然后提交了该文件 现在 我想查看该提交的差异 理想情况下应该显示添加的文件以及添加到其中的行 然而 git diff HEAD HEAD回报fatal ambiguous a
  • NtDll 真的导出 C 运行时函数吗?我可以在我的应用程序中使用这些函数吗?

    我在查看 Windows 10 计算机上的 NtDll 导出表 发现它导出标准 C 运行时函数 例如memcpy sprintf strlen etc 这是否意味着我可以在运行时动态调用它们LoadLibrary and GetProcAd
  • 代码退出-1073741515 (0xc0000135)“未找到依赖的 dll”

    我正在尝试编写一个简单的程序 与 2019 年相比 Windows 10 64 位 调试 gt x64 遵循 将 Visual C 项目配置为面向 64 位平台 1 include
  • 如何在 C++ 中急于提交分配的内存?

    总体情况 带宽 CPU 使用率和 GPU 使用率都极其密集的应用程序需要每秒从一个 GPU 向另一个 GPU 传输约 10 15GB 的数据 它使用 DX11 API 来访问 GPU 因此上传到 GPU 只能在每次上传都需要映射的缓冲区中进
  • 使用 TortoiseGit 创建 git 克隆时出现 SSL 证书问题

    我想在 TortoiseGit 的帮助下克隆 git 存储库 但出现错误 错误 SSL 证书有问题 请验证 CA 证书是否正常 细节 错误 14090086 SSL 例程 SSL3 GET SERVER CERTIFICATE 访问时证书验
  • 在 GitHub 上执行拉取请求时避免不需要的合并提交和其他提交

    我在 Github 上分叉了一个项目 令远程上游为upstream我的远程存储库是origin 我当地的master分支设置为跟踪远程master分支 然后我在本地添加了一些东西master 时不时与上游汇合 直到今天我想发出pull re
  • Git 中的“分支提示”是什么?

    我正在学习 Git 并阅读专业 Git 书籍 https git scm com book en v2 书中和 Stack Overflow 上有时会使用术语 分支提示 但我找不到它的含义 分支提示是分支上的最后一次提交或最近一次提交 基本
  • 合并之间的 git rebase 会导致完全不相关的文件发生冲突

    我有一个大型 Git 存储库 几个月前引入了一个错误 我想bisect它 首先引入一个过去的提交 存储库 然后重播合并 做rebase到新的 commit 如下图所示 据我了解 由于合并 Git 似乎无法正常工作 预期的 但我想更好地了解为
  • 移动/调整窗口大小时闪烁

    我开发了一个显示 jpeg 图像的应用程序 它可以显示 4 个图像 屏幕的每个象限各一个 为此 它使用了 4 个窗口 窗口没有边框 框架 也没有标题栏 当加载新图像时 窗口大小会根据新图像进行调整 然后显示该图像 尤其是当窗户做得较大时 经
  • hg 或 git 中的两个完整目录/项目之间存在差异?

    我继承了一个最初存储在 CVS 中的项目以及所有修订 我做了相当多的编辑 并且我试图比较我在原始目录中所做的所有更改 关于添加的新文件与旧文件 hg git 是否有某种实用程序可以让我进行树差异或类似性质的操作 也就是说 新添加的文件 删除
  • Git 中的合并冲突是由什么构成的?

    git 如何确定特定合并存在冲突以及冲突是什么 我的猜测是这样的 如果正在合并的两个提交有一个共同的父提交 并且如果它们都更改了父提交的 X 行 那就是冲突 让我的理解变得复杂的是 更改 X 行 可能意味着用几行新行替换它 但这仍然显示为一
  • 由于图形处理单元配置,不支持 Windows Phone 模拟器(Mac 上的 Windows 7)

    启动 Windows Phone 模拟器时出现错误 不支持 Windows Phone 模拟器 因为您的计算机没有所需的图形处理单元配置 如果没有图形处理单元 XNA 框架页面将无法运行 您想继续启动模拟器吗 当我尝试访问网页 任何网页 时
  • 如何通过哈希显示提交的日期和时间

    I used git reflog识别我创建特定分支时的哈希值 我得到了哈希值fe1ddcdef 我还没有将此分支推送到远程 我现在正在尝试查找日期和时间fe1ddcdef发生 git reflog只告诉我 fe1ddcdef HEAD 1

随机推荐