结合mingw和git
Posted
技术标签:
【中文标题】结合mingw和git【英文标题】:Combining mingw and git 【发布时间】:2011-08-04 15:14:51 【问题描述】:我在 D:\mingw 中安装了 MinGW。我在 C:\Program Files\git 中安装了 Git。我想使用 MinGW 开发/编译并使用 git 进行版本控制。
我想我必须使用正确的路径,但有些路径是硬编码的。像 msys 挂载脚本调用 /bin/msysmnt.exe
所以我有两个选择: 1. 使用 git 的 shell(能够在提示时向我显示分支) 2. 使用 mingw(msys) 的 shell - 有正确的路径
无论我选择哪个,我都必须让其他功能在其下工作。
【问题讨论】:
相关:***.com/questions/5885393/… 【参考方案1】:小更新: 自 Git 2.x 发布以来,Git for Windows 基于 MSYS2,并提供 32 位和 64 位二进制形式。它仍然是一个分支,不能与真正的 MSYS2 互换。
您必须了解的一件事:msysgit(您正在使用的 git)是 msys 的一个分支,添加了 git 功能。 msys shell 中包含许多 unix 工具(完整列表请参见 msysgit/bin 文件夹)。
也许可以在 msysgit bin 文件夹中添加额外的 msys 工具,但我不会冒险这样做。
鉴于此,我认为将您的工具链添加到 msysgit 路径(使用 bash 配置文件或 msysgit 树中的任何内容)并使用它是最佳选择。如果缺少特定实用程序,请从 MinGW-msys 树中添加它并希望它可以正常工作。
或者,只需使用 cmd.exe 中的 msys-git。从最近的版本开始,它运行良好(包括 git show、编辑提交消息等......)。为此,请将 /cmd 目录添加到 PATH,然后您可以使用所需的所有 git 命令。这就是我所做的,因为 msys 是一个拖累,但对于 git 在 Windows 上工作来说是一个必要的邪恶。
更新:在任何类型的 MSYS 下将目录添加到 PATH 的详细说明:
export PATH=/d/MinGW/bin:$PATH
或 hackishly 找到 /etc/profile 并更改此部分
if [ $MSYSTEM == MINGW32 ]; then
export PATH=".:/usr/local/bin:/mingw/bin:/bin:$PATH"
else
export PATH=".:/usr/local/bin:/bin:/mingw/bin:$PATH"
fi
到:
if [ $MSYSTEM == MINGW32 ]; then
export PATH=".:/usr/local/bin:/d/MinGW/bin:/bin:$PATH"
else
export PATH=".:/usr/local/bin:/bin:/mingw/bin:$PATH"
fi
没有更清洁的方法,因为 msys-git 人禁用了原版 msys 中的 fstab 功能。
来自 Nick 的更新(我做了什么让它工作):
我在C:\Program Files\Git\etc
中创建了一个名为bash_profile
的文件。这是文件的内容:
export PATH=$PATH:/d/mingw/bin:/d/mingw/msys/1.0/bin
make 和 gcc 工作。
bash_profile
没有随 msysgit 一起提供,所以更新时不会覆盖它。
【讨论】:
第一个建议 - 我大致知道需要发生什么。我需要详细信息。 “将工具链添加到 msysgit 路径”并没有说明一切 帮助很大。我已将 mingw/bin 和 msys/1.0/bin 添加到路径中并且它有效。但是我想念安装功能。我的文件在 /d/mingw/msys/1.0/home/.... 有没有简单的方法来解决这个问题。可能会用原始msys
中的文件覆盖msysgit
中的一些文件?
如果您缺少 msys 功能,请尝试执行相反的操作:将 msys-git/bin 路径添加到您的 MinGW-msys 安装中(以相同的方式)。运气好的话也应该可以。要以设计的方式将工具链添加到 MinGW-msys,请运行 sh /postinstall/pi.sh
并按照说明进行操作(但您当然知道 ;)
)
嗯,msysgit 有点复杂。它定义了很多shell函数。一个优点是在 bash 提示符中显示当前分支......但我也会尝试。也许在 msys 上复制 git profile
bash 是一个外壳,而 cmd 不是。别名、脚本 - 一切都变得更简单,我可以使用来自 linux 的 bash 脚本。【参考方案2】:
我通过打开 c:\MinGW\msys\1.0\etc\profile(不在记事本中,没有回车符)将 Git 放在 MinGW shell 上并添加:
export PATH=$PATH:/c/Program\ Files\ \(x86\)/Git/bin
在 x86 系统上,这将是:
export PATH=$PATH:/c/Program\ Files/Git/bin
【讨论】:
【参考方案3】:更新:
现在msys自带git二进制包。
http://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/
旧答案:
如果您使用最新的mingw & portableGit,只需将 git.exe(从portableGitXXX.7z 中提取文件)放入C:\MinGW\msys\1.0\bin\
【讨论】:
git for windows 不仅仅是 git 可执行文件。它有 bash 提示,文件和目录不区分大小写的 bash 自动补全,git gui ...等。git 也有可能使用了一些与我的 mingw 版本不兼容的 dll 库。 @NickSoft 在这个时候,GitHub 的 Windows 图形用户界面似乎比 Git 自带的图形用户界面更好(或者至少更直观)。另一方面,它还隐藏了 Git 的一些功能,并要求您在发生或需要任何不寻常的事情时打开 shell(尽管告诉您并允许您轻松打开任何 shell 通常会很好)将其配置为运行命令行 Git)。 Msys 附带的当前inputrc.default
也启用了不区分大小写的自动完成功能,但我不确定它是否在大约 3 年前启用。
有趣...我刚刚下载了 MinGW 来执行一些跨平台测试...即使安装了 MSYS,也没有开箱即用的 Git。而mingw-get install git
的结果是mingw-get.exe: *** ERROR *** git: unknown package
。【参考方案4】:
使用 msys2。 它的 msys 带有一个不错的包管理器 (pacman) 和构建系统 (makepkg),从 arch linux 移植。我有一个 shell,里面有我所有的 devtools 和 git 等等
【讨论】:
【参考方案5】:从今天开始,只需 pacman -S git
在 msys2 mingw64 shell 中安装 git
【讨论】:
这对我有用,谢谢!截至今天,MSYS2 v 20210228 使用此方法安装git version 2.31.1
以上是关于结合mingw和git的主要内容,如果未能解决你的问题,请参考以下文章