为什么我的Git Bash出现"MINGW64"?

99

我不得不重新格式化我的笔记本电脑,所以我不得不再次安装Git。然而它与昨天的那个版本有很大不同,图标不再是默认的橙色,现在看起来更像Chrome。

git

每行的bash也有所不同,包括一个紫色的"MINGW64"。为什么会出现这个东西呢?

这是新的最终版本吗?还是我下载了不同的东西?

我从https://git-scm.com/downloads下载了https://github.com/git-for-windows/git/releases/download/v2.5.1.windows.1/Git-2.5.1-64-bit.exe

谢谢!


1
8月31日刚刚发布了一个新版本,所以你之前可能使用的是旧版本。这个版本明显拥有比之前更加新的图标和外壳配置。不过我们不知道你下载的是什么(因为你没有告诉我们),所以无法确定是否是正确的版本。 - Etan Reisner
2
嗨,我在问题上放了链接,关于图标的奇怪之处在于我在其他地方找不到它。每行中的“MINGW64”有什么线索或原因吗?谢谢! - FelipeKunzler
1
这是新的构建。MINGW64可能是平台。declare -p PS1说了什么?它应该在那个位子上有一些东西(可能是一个函数调用)。如果你不喜欢它,你可以改变它。 - Etan Reisner
是的,我不知道为什么新图标没有出现在“标志”或其他位置的网站上。也许它是无意中被混入了Windows版本中,或者可能是网站只是滞后了,或者完全有其他原因。如果您想得到更正式的答案,可以直接联系git的负责人。 - Etan Reisner
当我输入这行代码"declare -p PS1"时,我得到以下结果:declare -x PS1="\[\033]0;$MSYSTEM:${PWD//[^[:ascii:]]/?}\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ ps1`\[\033[0m\]\n$ " - FelipeKunzler
1
每次我安装Git时,我都必须搜索这个问题。 - aliopi
9个回答

88
最简单的删除 "MINGW64" 的方法是在文件中注释掉两行代码:
\Git\etc\profile.d\git-prompt.sh
...
# PS1="$PS1"'\[\033[35m\]'       # change to purple
# PS1="$PS1"'$MSYSTEM '          # show MSYSTEM

13
在Bash终端中导航,这将位于/etc/profile.d/git-prompt.sh - Damon
35
在Windows上,这可以在 C:\Program Files\Git\etc\profile.d 中找到。 - Sonic Soul
1
还有一个TITLEPREFIX,您可以从窗口标题中删除它:"TITLEPREFIX=SDK #-${MSYSTEM#MINGW}" - Sonic Soul
1
如果您的终端来自于 Atlassian 的 Source Tree 安装程序,则该文件位于 %LOCALAPPDATA%\Atlassian\SourceTree\git_local\etc\profile.d - KyleMit
1
太好了!我不得不将\etc\profile.d\git-prompt.sh文件中的内容复制到~.bash_profile,然后将那两行注释掉。成功了! - Quang Van
显示剩余3条评论

49

这是新的图标,与Git for Windows 2.x一起使用。我想网站需要更新,但通常没有太多志愿者。

MINGW64是来自MSYSTEM环境变量的值。通过在/etc/bash.bashrc文件中设置PS1,已将其包含在bash提示符中。您可以在自己的$HOME/.profile中覆盖此设置,或者如果愿意,编辑分发的设置以删除它。


$HOME/.profile didn't exist for me, so I created it, copied the contents of /etc/git-prompt.sh, and modified it around the line #show MSYSTEM - Dylan Hildenbrand
3
如何消除粉色_MINGW64_的答案在这里:https://dev59.com/m1wY5IYBdhLWcg3wq5Qd#32912485。 - aliopi

22

MINGW64是“Minimum GNU for Windows 64 bit”的缩写。它是用于构建“Git for Windows”中包含的另一份 bash 的编译器。

“Git for Windows”包括git和各种其他软件,您的计算机上可能已经安装了这些软件,其中包括:

由于 PS1 喜好通常是个人化的,您可能更喜欢您现有的设置。

如果您想在Windows上使用真正的Unix环境

您可以使用WSL,并在WSL Linux分发版上简单地安装真正的Linux x64应用程序。

如果你想要一个本地的Windows git,但不想要所有额外的软件

  • 如果您没有任何git应用程序安装,可以从nuget中获取一个最小构建。

  • 但是如果您使用包含嵌入式git的GUI,则可以使用Sourcetree附带的git - 我个人喜欢在我的powershell配置文件中添加路径:

    Add-PathVariable "${env:UserProfile}\AppData\Local\Atlassian\SourceTree\git_local\bin"

这提供了git,而无需对系统进行任何其他更改或复制其他软件。

顺便提一下,Add-Pathvariable 来自于 PSCX


因为编辑观点不同而被踩了。不过信息很有用。 - ctrueden
6
1)“整堆不必要的东西”这个词汇传递了你的个人观点。更加中立和技术上准确的描述应该是列出包含的内容以及原因。请尊重人们花费大量时间在Git for Windows上,它是一个庞大的社区,并且事情被构建成现在这样是有充分理由的。 2)说Git Bash“实际上并不存在”是不可接受的。它确实存在:它是随Git for Windows一起提供的提示符,建立在MinGW上。说它只是“某个人喜欢的PS1”暗示着个人主张而不是社区驱动的开源软件。 - ctrueden
1
我仍然认为这种说法有点不公平——例如,bash 不随附于早期 Windows 10 更新之前的版本;总的来说,更公平的说法应该是“包括 Git 和各种其他软件,旨在使 Git 能够在现有的 Windows 配置下即插即用。”但我真的很感激这个努力,所以我改成了点赞。 - ctrueden
@ctrueden 谢谢,已经调整为指定 Windows 10。 - mikemaccana
并没有真正回答问题。 - Jan Kyu Peblik
2
我更愿意将其视为唯一尝试回答“真正”问题的人。谁真正关心“MINGW”的粉色字形。 - user2023370

9

根据 @patthoyts 的说法:

MINGW64 是Git for Windows 2.x中使用的新图标。 MINGW64是从MSYSTEM环境变量中获取的值。通过在/etc/bash.bashrc文件中设置PS1,已在bash提示符中包含了它。您可以在自己的$HOME/.profile中覆盖此设置或编辑分发的文件以删除它(如果您愿意)。

MINGW64和系统名称是我们不想或不需要总是看到的,并且有时可能希望将它们移除以有效地使用显示空间。要这样做,我们只需要注释掉\Git\etc\profile.d\git-prompt.sh中的4行代码,这个文件通常位于您的程序文件夹内。

PS1="$PS1"'\[\033[32m\]'       # change to green
PS1="$PS1"'\u@\h '             # user@host<space>
PS1="$PS1"'\[\033[35m\]'       # change to purple
PS1="$PS1"'$MSYSTEM '          # show MSYSTEM

这是在git-prompt.sh中的4行代码,通常是第14行到第17行,可以通过在每一行开头加上#来注释掉并删除显示的绿色计算机名称和紫色MSYSTEM。如果您只想删除其中一个,可以相应地注释掉某些行。它应该看起来类似于这样。
# PS1="$PS1"'\[\033[32m\]'       # change to green
# PS1="$PS1"'\u@\h '             # user@host<space>
# PS1="$PS1"'\[\033[35m\]'       # change to purple
# PS1="$PS1"'$MSYSTEM '          # show MSYSTEM

1
非常好的答案,易于理解 - 非常感谢 - Evan M

3

export PS1="${PS1/\$TITLEPREFIX:}"; export PS1="${PS1/\$MSYSTEM }" >> ~/.bashrc

将这段命令添加到~/.bashrc文件中,它会从当前的提示符中移除标题前缀和MSYSTEM字符串。

2
谢谢您的回答。您能解释一下这是如何解决问题的吗? - ggorlen
1
@ggorlen 它通过将变量(以及其后的单个字符)替换为空来覆盖(逐步增强)PS1。 只需运行该命令即可(并重新源化〜/ .bashrc或重新运行Git Bash)。 - Jan Kyu Peblik
好的,谢谢。我建议您编辑帖子以包含该信息,以供未来读者参考。 - ggorlen
@ggorlen 放过吧。这里已经有足够多的冒充答案的文章了。而且在评论中已经明确指出,无聊的官僚们可以选择不删掉毫无意义的内容。(我喜欢你的网站。) - Jan Kyu Peblik

3

在新的 git 版本中有一些不同。

  • /etc/bash.bashrc 中复制以下行: export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[35m\]$MSYSTEM\[\e[0m\] \[\e[33m\]\w\[\e[0m\]\n'"${_ps1_symbol}"' '

  • 将其添加到 ~/.bashrc 并进行自定义编辑: export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n '

    如果您不喜欢按下 Enter 时出现的额外空行,请删除上面的 \n

  • 运行以下命令以使更改生效: source ~/.bashrc

  • 我的终端示例:

    enter image description here


这个方法可以完全覆盖PS1,但会从提示符中删除git(分支)信息,这可能会让人想知道为什么一个人要使用Git Bash而不是一些更通用的东西,比如安装了git和git-completion.bash的Cygwin(公平地说,无论如何,人们都可能会想知道)。 - Jan Kyu Peblik

2

稍作补充。如果Windows安装在C盘,那么这就是编辑文件git-prompt.sh并注释所需行(通常为14-17)的路径:

C:\Program Files\Git\etc\profile.d

1
最简单的方法是使用:


$ parse_git_branch() { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'; }
$ export PS1="\u@ \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "

еҪ“дҪ жӢҘжңүжңҖеҸҜйқ зҡ„git rev-parse --abbrev-ref HEADе‘Ҫд»Өж—¶пјҢдёҚиҰҒи§Јжһҗgit branchе‘Ҫд»Өзҡ„иҫ“еҮәжқҘиҺ·еҸ–еҪ“еүҚеҲҶж”ҜгҖӮ - Romain Valeri

1
我也在我的电脑上注意到了这一点。你所指的橙色图标可能是运行“Bash on Ubuntu on Windows”应用程序时通常会出现的Ubuntu图标。然而,当你安装GIT时,它也使用了一个bash版本。该应用程序在开始菜单中被称为“Git Bash”。
当我只是在搜索框中输入“Bash”,然后按下回车键时,Windows打开了“最佳匹配”,这在我的情况下是带有MINGW64的GIT安装。如果你输入“Ubuntu”,或者查看开始菜单的选项,你应该会看到另外一个bash。
这很重要要知道这两个环境是分开的,因为一个环境中的程序可能没有安装在另一个环境中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接