我的办公室和家用电脑都有来自同一来源的Git Bash for Windows(Git for Windows,TortoiseGit附带),但Git Bash的提示在两台机器上都有所不同:
/c/path (branch)
全绿(这就是我希望它如何),到目前为止,我被告知,这是PS1
变量,保存在~/.bashrc
文件中。但是,在两台计算机上都缺少此文件(执行notepad ~/.bashrc
会打开空的记事本)。
我迷失在这里。如果~/.bashrc
不存在,那么Git Bash"知道",它应该在绿色提示中显示当前分支?为什么在第二台机器上不会发生同样的情况?
编辑:我还尝试比较c:\Program Files\Git\etc\
文件的机器和内容的Git Bash.vbs
文件夹内容。在两台计算机上都是相同的,所以我更不知道,Git Bash的提示在两台计算机上都有所不同(以及如何解决这个问题)。
有几个答案(例如this,this和this)建议我,我应该查找.bash_profile
和.bash_prompt
个文件。不幸的是,我的两台计算机上也缺少这两个。
Windows 7下究竟是什么文件决定?我应该在哪里寻找,以及PS1
变量值应该是什么,以便在两台机器上以绿色提示显示当前分支?
答案 0 :(得分:20)
Windows上的Git几乎总是使用bash shell。所以,它不是Git 设置提示和Bash一样多。
有两种方法可以在Bash中设置提示。一个是PS1
命令,它相当灵活,但仅限于一组特定的转义字符序列。不幸的是,Git信息不是其中一个转义序列(尽管我怀疑它有一天会来)。您可以使用第二种方法通过设置PROMPT_COMMAND
环境变量来设置提示。如果设置了此项,则会执行$PROMPT_COMMAND
并将其用作提示而不是PS1
环境变量。
当您使用BASH安装标准Git时,您在/etc/profile
文件下定义了Git提示。顺便说一下,etc
是您安装Git的目录,通常在%PROGRAMFILES%
下,除非您在安装Git时更改了它。
在我的版本中第156行的/etc/profile
脚本下,您会看到正在设置PS1
命令并在$(__git_ps1)
中使用$PS1
作为执行外部操作的方法命令在提示符中。 (我之前没有提及的第三种方式)。
__git_ps1
是一个shell函数。您还会注意到/etc/git-completion.bash
以及/etc/git-prompt.sh
的来源(我的版本中的第154行)。定义/etc/git-prompt.sh
函数(我的版本中的第273行)的__git_ps1
已定义。您会注意到__git_ps1
函数会引入/etc/git-prompt.sh
中定义的其他几个函数。
所以,以非常Rube Goldberg的方式,通过定义/etc/profile
在$PS1
中定义了Git提示,其引入/etc/git-prompt.sh
定义了__git_ps1
函数拉动在__git_ps1_show_upstream
函数和__git_ps1_colorize_gitstring
函数中。然后,$PS1
使用$(...)
字符串作为将__git_ps1
函数拉入PS1
的一部分。
您可以定义自己的$HOME/.bash_profile
以覆盖设置提示以定义自己的提示的方式。而且,当您这样做时,您也可以在自己的提示中使用__git_ps1
Bash功能。
或者,你可以简单地决定不接触任何东西,然后慢慢地退回去。毕竟,你可能还有实际的工作要做。
答案 1 :(得分:2)
我遇到了类似的问题,并意识到我不小心在Windows 10 64位环境/系统变量(此PC)下添加了$ {HOME}变量,该变量指向我的unixhome路径。一旦删除它,问题就解决了。我的Git Bash提示符又回到了以前的样子。
答案 2 :(得分:1)
如果我有足够的声誉,我会发表评论,
但我的猜测是bashrc不在你的homefolder中:〜/但在所有用户或一般用户文件夹中(我不知道它是如何命名的)。查看所有用户所在的用户,并搜索.bashrc。
看这里:C:\ Users \ All Users 或:C:\ Users \ Default User
答案 3 :(得分:1)
在我的Windows10上,“ __ git_ps1”定义在以下位置:C:/ Program Files / Git / etc / profile.d / git-prompt.sh