Git分支标签,其符号出现在我的命令行中

时间:2016-02-17 05:50:05

标签: git ubuntu virtualbox drush

我最近在我的ubuntu环境中安装了各种程序(宅基地,流浪汉,虚拟机)。其中一个程序导致我的命令行开始显示git的当前分支以及与git状态相关的神秘符号。它们看起来像这样:

vagrant@homestead ~/Code/myapp (staging *<) $ cd home

你可以看到它是&#34; staging&#34;科。 &#34; *&lt;&#34;与git状态有关。

这是另一个例子:

vagrant@homestead ~/Code/myapp (master=) $ cd ..

在这种情况下,我在&#34;主人&#34;分支和&#34; =&#34;指的是git状态。

虽然我觉得它很整洁,但不幸的是git也大大减慢了我的命令行。因此,我想找出导致git更改的原因(它没有使用这样的行为)并尝试撤消功能。我知道git是减速的原因,因为在我的应用程序中没有git,一切都在游泳。我也跑了#34; top&#34;并注意到git是我的系统挂起时唯一运行的东西,占用了33%到50%的某些资源。

我认为更新到更新版本的git会有所帮助,但它没有做任何改动。目前我正在运行git版本2.7.1。

以下程序之一可能与此有关:drush,ruby或指南针。不幸的是,我无法通过这种方式隔离哪个程序可能会影响git,并且它可能完全是一个不同的程序,我无法记住安装。

2 个答案:

答案 0 :(得分:3)

检查您的$PS1$PROMPT_COMMAND变量:它可能指的是昂贵的ps1函数,它会计算您所在的git repo的状态。
例如,参见&#34; git bash slow&#34; (对于基于Windows Linux的shell,但同样适用于Linux)

检查导出PS1 =&#39; $&#39; (仅用于测试)加快速度:至少可以确认问题。

OP添加in the comment

  

这个问题似乎与git存储库的大小成正比,因为我创建了一个只包含1个文件的新目录,并且git在各方面都闪电般快速。

     

我发现这些git符号/分支标签出现在我的命令行中,因为这个变量:PROMPT_COMMAND但我仍在尝试追踪生成它的文件。
  当我在命令行上运行它时,它使所有内容再次以光速运行:export PROMPT_COMMAND="echo -n [$(date +%k:%m:%S)]"

您有脚本根据文件夹启用/禁用提示,以避免某些文件夹包含大文件和性能成本。
查看项目&#34; jhrcz/git-prompt-autoenable&#34;和its documentation

PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'

答案 1 :(得分:1)

安装“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="\[\033[0;31m\]"
    GREEN="\[\e[0;32m\]"
    BLUE="\[\e[34m\]"
    OFF="\[\033[m\]"
    HOST="\h"
    USER="\u"
    DIR="\w"
    NEWLINE="\n"
    DATE="\d"
    TIME="\T"
    BRANCH="`git branch 2> /dev/null | grep -e ^* | sed -E  s/^\\\\\*\ \(.+\)$/\(\\\\\1\)\ /`"

    PROMPT="\[\033]0;${USER}@${HOST}: \w\007\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