Git 带有符号的分支标签出现在我的命令行上
Git branch labels with symbols appearing on my command line
我最近在我的 ubuntu 环境中安装了各种程序(homestead、vag运行t、virtualbox)。其中一个程序导致我的命令行开始显示 git 的当前 b运行ch 以及与 git 状态相关的神秘符号。它们看起来像这样:
vagrant@homestead ~/Code/myapp (staging *<) $ cd home
你可以看到它的地方是 "staging" b运行ch。 “*<”与 git 状态有关。
这是另一个例子:
vagrant@homestead ~/Code/myapp (master=) $ cd ..
在这种情况下,我在 "master" b运行ch 上,“=”指的是 git 状态。
虽然我认为它很简洁,但不幸的是 git 也大大降低了我的命令行速度。因此,我想找出是什么导致 git 发生这种变化(它以前不是这样的)并尝试撤消这些功能。我知道 git 是速度变慢的原因,因为在我没有 git 的应用程序中,一切都运行顺畅。我还 运行 "top" 并注意到 git 是唯一的东西 运行 当我的系统挂起时,占用了 33% 到 50% 的某些资源。
我认为更新到 git 的较新版本会有所帮助,但它没有做出任何改变。目前我是 运行 git 版本 2.7.1.
以下程序之一可能与此有关:drush、ruby 或 compass。不幸的是,我无法通过这种方式隔离出哪个程序可能影响了 git,并且它可能是一个完全不同的程序,我不记得安装了。
检查您的 $PS1
或 $PROMPT_COMMAND
变量:它可能引用一个昂贵的 ps1 函数,该函数计算您所在的 git 存储库的状态。
例如参见“git bash slow”(对于基于 Windows Linux 的 shell,但同样适用于 Linux)
检查导出 PS1='$'(仅用于测试)是否加快速度:这至少会确认问题。
OP adds :
The issue does seem to be proportional to how large the git repository is, because I created a new directory with just 1 file in it, and git is working lightning fast in every way.
I discovered these git symbols/branch label are appearing on my command line due to this variable: PROMPT_COMMAND
but I am still trying to trace down which file is generating it.
When I ran this on the command line, it made everything work at light speed again: export PROMPT_COMMAND="echo -n [$(date +%k:%m:%S)]"
您有enables/disables根据文件夹提示的脚本,以避免某些文件夹有大文件和性能成本。
查看项目“jhrcz/git-prompt-autoenable
" and its documentation:
PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\$ "'
安装 "drush" 导致命令行发生变化。你会注意到 "drush" 安装完成后,它会提到它在你的 .bashrc 文件中添加了一些行,包括这一行:
# Include Drush prompt customizations.
if [ -f "/home/vagrant/.drush/drush.prompt.sh" ] ; then
source /home/vagrant/.drush/drush.prompt.sh
fi
如果您打开它引用的文件 (/home/vagrant/.drush/drush.prompt.sh),您会看到 PROMPT_COMMAND 和 PS1 正在修改中。
与其完全删除或覆盖 drush。prompt.sh,不如对其进行修改以免丢失 drush 命令行定制。但是,要完全覆盖它,您可以在 .bashrc 文件中添加如下内容。位于您的 ~ 目录中的 .bashrc 文件将仅修改您的配置文件。这是一个显示一些不错的信息和运行速度更快的 git 状态的示例:
TZ='America/Chicago'; export TZ
export PROMPT_COMMAND="echo -n [$(date +%r)]";
export PS1='\[\e]0;\w\a\] \[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\] $((git symbolic-ref -q HEAD || git rev-parse -q --short $
您可能不需要TZ线,也可以相应调整。
这是另一个不错的选择:
function mycp {
EXITSTATUS="$?"
YELLOW="$(tput setaf 3)"
RED="\[3[0;31m\]"
GREEN="\[\e[0;32m\]"
BLUE="\[\e[34m\]"
OFF="\[3[m\]"
HOST="\h"
USER="\u"
DIR="\w"
NEWLINE="\n"
DATE="\d"
TIME="\T"
BRANCH="`git branch 2> /dev/null | grep -e ^* | sed -E s/^\\\*\ \(.+\)$/\(\\\)\ /`"
PROMPT="\[3]0;${USER}@${HOST}: \w[=12=]7\n${YELLOW}${TIME} ${DATE} ${GREEN}${USER}@${HOST} ${RED}${BRANCH}"
if [ "${EXITSTATUS}" -eq 0 ]
then
PS1="${PROMPT} ${BLUE}[${GREEN}${EXITSTATUS}${BLUE}]${OFF}\n${GREEN}\w $${OFF} "
else
PS1="${PROMPT} ${BLUE}[${GREEN}${EXITSTATUS}${BLUE}]${OFF}\n${GREEN}\w $${OFF} "
fi
}
PROMPT_COMMAND=mycp
我最近在我的 ubuntu 环境中安装了各种程序(homestead、vag运行t、virtualbox)。其中一个程序导致我的命令行开始显示 git 的当前 b运行ch 以及与 git 状态相关的神秘符号。它们看起来像这样:
vagrant@homestead ~/Code/myapp (staging *<) $ cd home
你可以看到它的地方是 "staging" b运行ch。 “*<”与 git 状态有关。
这是另一个例子:
vagrant@homestead ~/Code/myapp (master=) $ cd ..
在这种情况下,我在 "master" b运行ch 上,“=”指的是 git 状态。
虽然我认为它很简洁,但不幸的是 git 也大大降低了我的命令行速度。因此,我想找出是什么导致 git 发生这种变化(它以前不是这样的)并尝试撤消这些功能。我知道 git 是速度变慢的原因,因为在我没有 git 的应用程序中,一切都运行顺畅。我还 运行 "top" 并注意到 git 是唯一的东西 运行 当我的系统挂起时,占用了 33% 到 50% 的某些资源。
我认为更新到 git 的较新版本会有所帮助,但它没有做出任何改变。目前我是 运行 git 版本 2.7.1.
以下程序之一可能与此有关:drush、ruby 或 compass。不幸的是,我无法通过这种方式隔离出哪个程序可能影响了 git,并且它可能是一个完全不同的程序,我不记得安装了。
检查您的 $PS1
或 $PROMPT_COMMAND
变量:它可能引用一个昂贵的 ps1 函数,该函数计算您所在的 git 存储库的状态。
例如参见“git bash slow”(对于基于 Windows Linux 的 shell,但同样适用于 Linux)
检查导出 PS1='$'(仅用于测试)是否加快速度:这至少会确认问题。
OP adds
The issue does seem to be proportional to how large the git repository is, because I created a new directory with just 1 file in it, and git is working lightning fast in every way.
I discovered these git symbols/branch label are appearing on my command line due to this variable:
PROMPT_COMMAND
but I am still trying to trace down which file is generating it.
When I ran this on the command line, it made everything work at light speed again:export PROMPT_COMMAND="echo -n [$(date +%k:%m:%S)]"
您有enables/disables根据文件夹提示的脚本,以避免某些文件夹有大文件和性能成本。
查看项目“jhrcz/git-prompt-autoenable
" and its documentation:
PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\$ "'
安装 "drush" 导致命令行发生变化。你会注意到 "drush" 安装完成后,它会提到它在你的 .bashrc 文件中添加了一些行,包括这一行:
# Include Drush prompt customizations.
if [ -f "/home/vagrant/.drush/drush.prompt.sh" ] ; then
source /home/vagrant/.drush/drush.prompt.sh
fi
如果您打开它引用的文件 (/home/vagrant/.drush/drush.prompt.sh),您会看到 PROMPT_COMMAND 和 PS1 正在修改中。
与其完全删除或覆盖 drush。prompt.sh,不如对其进行修改以免丢失 drush 命令行定制。但是,要完全覆盖它,您可以在 .bashrc 文件中添加如下内容。位于您的 ~ 目录中的 .bashrc 文件将仅修改您的配置文件。这是一个显示一些不错的信息和运行速度更快的 git 状态的示例:
TZ='America/Chicago'; export TZ
export PROMPT_COMMAND="echo -n [$(date +%r)]";
export PS1='\[\e]0;\w\a\] \[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\] $((git symbolic-ref -q HEAD || git rev-parse -q --short $
您可能不需要TZ线,也可以相应调整。
这是另一个不错的选择:
function mycp {
EXITSTATUS="$?"
YELLOW="$(tput setaf 3)"
RED="\[3[0;31m\]"
GREEN="\[\e[0;32m\]"
BLUE="\[\e[34m\]"
OFF="\[3[m\]"
HOST="\h"
USER="\u"
DIR="\w"
NEWLINE="\n"
DATE="\d"
TIME="\T"
BRANCH="`git branch 2> /dev/null | grep -e ^* | sed -E s/^\\\*\ \(.+\)$/\(\\\)\ /`"
PROMPT="\[3]0;${USER}@${HOST}: \w[=12=]7\n${YELLOW}${TIME} ${DATE} ${GREEN}${USER}@${HOST} ${RED}${BRANCH}"
if [ "${EXITSTATUS}" -eq 0 ]
then
PS1="${PROMPT} ${BLUE}[${GREEN}${EXITSTATUS}${BLUE}]${OFF}\n${GREEN}\w $${OFF} "
else
PS1="${PROMPT} ${BLUE}[${GREEN}${EXITSTATUS}${BLUE}]${OFF}\n${GREEN}\w $${OFF} "
fi
}
PROMPT_COMMAND=mycp