我正在尝试更改终端中的命令提示符。我总是得到错误:
-bash: __git_ps1:命令未找到
我已经尝试过了,只是把它输入到终端,就像:__git_ps1。我还在.bash_profile中尝试了它
if [ -f ~/.git-completion.bash ]; then
source ~/.git-completion.bash
export PS1='[\W]$(__git_ps1 "(%s)"): '
fi
正如你可能会看到/告诉,是的,我确实安装了自动完成,它确实工作得很好!
我遇到了这个问题:“PS1 env变量不能在mac上工作”,这给出了代码
别名__git_ps1 =“git分支2 > / dev / null | grep‘*’| sed /* \(.*\)/(\ 1) /”
所以我把它添加到.bash_profile中,希望它能改变一些东西。嗯,确实如此。它只是改变了错误输出。
下面是增加的.bash_profile:
alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"
if [ -f ~/.git-completion.bash ]; then
source ~/.git-completion.bash
export PS1='[\W]$(__git_ps1 "(%s)"): '
fi
现在这里是修改后的错误输出:
sed: (%s):没有这样的文件或目录
注意:我也将别名移到源代码下面,没有任何区别。我的git版本是1.7.12.1
这应该是一个简单的更改。有人能帮帮我吗?
编辑10/13/12
不,我肯定不想自己定义__git_ps1,但只是想看看这样做是否会被识别。是的,我有。git完成。已安装Bash文件。下面是我如何在我的机器上实现自动完成的。
cd ~
curl -OL https://github.com/git/git/raw/master/contrib/completion/git-completion.bash
mv ~/git.completion.bash ~/.git-completion.bash
ls -la则列出.git完成符。bash文件。
编辑10/13/12 -由Mark Longair解决(如下)
下面的代码在.bash_profile中为我工作,而其他人没有…
if [ -f ~/.git-prompt.sh ]; then
source ~/.git-prompt.sh
export PS1='Geoff[\W]$(__git_ps1 "(%s)"): '
fi
针对MacOS Sierra和git版本2.10.1 <2017-2-06>的解决方案
步骤1:安装Git
如果您已经安装了最新的git,则可以跳过此步骤。
从浏览器https://git-scm.com/download/下载git包
注意:如果你安装curl [option] https://..。选项来下载,你必须确保你的系统支持SSL。因此,对于新手来说,从浏览器下载并直接从git安装程序中安装要容易得多。
Installation Verification:
显示你的git目录在哪里:哪个git
显示当前git的版本:git当前版本应该是2.10.1。
步骤2:将git配置文件添加到shell中
打开您的shell配置文件:
纳米~ /。Bash_profile或nano ~/。bashrc取决于你的修改在哪里。
将以下代码添加到文件中:
源/usr/local/git/contrib/completion/git-completion.bash
源/usr/local/git/contrib/completion/git-prompt.sh
注意:在OSX升级到El Capitain后,git的安装位置从opt/ directory更改为usr/local/,这就是为什么上面的一些旧答案在MacOS Sierra中不再有效的原因。
Add the following code to your PS1 configuration:
Option 1: add directly to your PS1: export PS1='\w$(__git_ps1 "(%s)") > '
I prefer this simple approach since I already know the .git-completion.bash is there in my home directory, and I can add other prompt format in the front of it. here is my personal prompt for your reference: export PS1='\t H#\! \u:\w$(__git_ps1 "{%s}") -->> '
Option 2: Add a selection script
if [ -f ~/.git-completion.bash ]; then
export PS1='\w$(__git_ps1 "(%s)") > '
fi
Save and use the profile: source ~/.bash_profile or source ~/.bashrc
Now you should see the git prompt working properly and shows which branch you are in right now.
curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh -o ~/.git-prompt.bash
[[ -f ~/.git-prompt.bash ]] && . ~/.git-prompt.bash
# Available GIT_PS1 options/env vars
cat ~/.git-prompt.bash | grep GIT_PS1_ | sed -r 's,^\s*#.*,,' | grep -v -E '^$' | sed -r 's,^.*(GIT_PS1_[A-Z_]+).*,\1,' | sort | uniq | sed -r 's,^(.*)$,export \1=,'
export GIT_PS1_COMPRESSSPARSESTATE=
export GIT_PS1_DESCRIBE_STYLE=
export GIT_PS1_HIDE_IF_PWD_IGNORED=
export GIT_PS1_OMITSPARSESTATE=
export GIT_PS1_SHOWCOLORHINTS=
export GIT_PS1_SHOWDIRTYSTATE=
export GIT_PS1_SHOWSTASHSTATE=
export GIT_PS1_SHOWUNTRACKEDFILES=
export GIT_PS1_SHOWUPSTREAM=
export GIT_PS1_STATESEPARATOR=
for i in $(cat ~/.git-prompt.bash | grep GIT_PS1_ | sed -r 's,^\s*#.*,,' | grep -v -E '^$' | sed -r 's,^.*(GIT_PS1_[A-Z_]+).*,\1,' | sort | uniq); do varname=$i; declare -g ${i}=1; done
# P.S Above is just illustration not all config vars are [0/1].
# For more info:
cat ~/.git-prompt.bash | sed -r -n -e '1,/^[^\s*#]/p' | head -n -2