在Windows上修改Git提示符

我在Windows上使用Git,通过GitExtensions安装MSysGit(最新版),在安装过程中select了“不要修改我的Windows提示符”。

现在,我想能够修改默认提示(默认情况下只显示分支名称也显示了多less时间,以及从上次推送到origin (或特定的origin/master ,取决于)更轻松)。

所以说,而不是: me@myPC /c/myRepo (master)

我会看到以下me@myPC /c/myRepo (master) 5 | 10:20行: me@myPC /c/myRepo (master) 5 | 10:20 me@myPC /c/myRepo (master) 5 | 10:20

这意味着我最后10小时20分钟前,我已经做了5个地方提交。

在你提到之前,我知道有一些PowerShell的方法,但是我不想使用它。 我想我的标准git bash我们都知道和爱。

我发现了一些解决scheme,在.bashrc文件中修改PS1variables,但是(请原谅我可怜的Unix版本)他们似乎不工作,(例如接受这个问题的答案)。

所以你有它。 这可能吗?

默认的git-completion脚本支持你之后的部分内容。 如果在/ etc / profile文件中设置了GIT_PS1_SHOWUPSTREAM =“verbose git”,那么它会在提示中将上游分支前面的提交数量加上。 您可能需要按如下所示设置提示,以便在git特定部分中包含(%s)

 export PS1='\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w$(__git_ps1 " (%s)")\033[0m\] \$ ' 

对于时间的一部分 – 这对我来说是新的。 但是git-bash应该处理你可能找到的任何unix版本。 只需以管理员身份(实际上是%PROGRAMFILES%\Git\etc\profile编辑/ etc / profile或创建一个〜/ .profile文件,其中包含以下内容:

 GIT_PS1_SHOWDIRTYSTATE=1 GIT_PS1_SHOWUPSTREAM='verbose git' export GIT_PS1_SHOWDIRTYSTATE GIT_PS1_SHOWUPSTREAM 

与这些环境变量设置,默认的msysGit提示符看起来像这样,如果你有一个提交之前提交1个脏树:

 pat@FROG /c/src/msysgit (devel * u+1) $ git status --short --branch ## devel...origin/devel [ahead 1] M doc/git/html M etc/inputrc 

步骤1.将这两个文件复制到您的主文件夹,您可以在%PROGRAMFILES%\ Git \ etc \下找到它们。

 git-completion.bash git-prompt.sh 

步骤2.在你的bash配置文件(如.bashrc配置PS1,例如:

 . git-completion.bash . git-prompt.sh GIT_PS1_SHOWDIRTYSTATE=true PS1='\w\[\033[01;32m\]$(__git_ps1)\[\033[00m\]\$ ' 

__git_ps1函数在mingw bash中的/git/config/completion/git-completion.bash定义。 您应该可以将此功能复制到您自己的.bashrc中,并根据您的选择进行编辑。

FWIW我选择跳过__git_ps1和我自己的东西与颜色。 以下是我的.bashrc提示代码:

 DEFAULT_COLOR='\[\e[0m\]' BLACK='\[\e[0;30m\]' LTBLUE='\[\e[1;34m\]' LTRED='\[\e[1;31m\]' USER_COLOR=$LTBLUE GIT_CHANGE_COLOR=$LTRED GIT_NO_CHANGE_COLOR="$BLACK" gitPrompt() { local gitPrompt=$(__git_ps1) local gitColor="$GIT_NO_CHANGE_COLOR" if [ -n "$gitPrompt" ]; then branch=$(git symbolic-ref HEAD 2>/dev/null) if [ "$gitPrompt" != " (${branch##refs/heads/})" ]; then gitColor="$GIT_CHANGE_COLOR" fi fi echo "$USER_COLOR\u@\h:\W$gitColor$gitPrompt$DEFAULT_COLOR$ " } PROMPT_COMMAND='PS1="$(gitPrompt)"' 

每次打印提示时都会评估PROMPT_COMMAND中的表达式。

要做你想做的事情,你可能需要用awk或perl之类的东西来解析reflog,然后在分支名字后加上。 我通常依靠gitk来查看您正在查找的信息。

如果你运行Windows的GitPortable,你可能想要从这个网站获取这个技巧

在gitportable控制台中写入$ nano ~/.bashrc nano〜 $ nano ~/.bashrc 编辑完成之后,写入$ source ~/.bashrc来重新加载设置。 我的安装将文件保存在C:\ apps \ GitPortable \ Data \ home文件夹中。

 # Git-friendly prompt showing dirty state # http://stackoverflow.com/questions/10133173/alter-git-prompt-on-windows shopt -s promptvars export GIT_PS1_SHOWDIRTYSTATE=1 export GIT_PS1_SHOWUPSTREAM='verbose git' export PS1='\[\033[1;36m\]\[\033[0m\]\[\033[1;34m\]\w\[\033[0m\] \[\033[1;32m\]$(__git_ps1)\[\033[0m\]\$ ' # Enable color support of ls alias ls='ls --color=auto -alhX'