(Mac)-bash:__git_ps1:找不到命令
我试图在terminal中改变我的命令。 我不断收到错误:
-bash: __git_ps1: command not found
我已经试过了,只需将它键入到terminal,如下所示: __git_ps1
。 我也试过了.bash_profile
if [ -f ~/.git-completion.bash ]; then source ~/.git-completion.bash export PS1='[\W]$(__git_ps1 "(%s)"): ' fi
正如你可能看到/说出的那样,是的,我确实已经安装了自动完成function,它确实很好用!
我遇到了这个问题:“ PS1 envvariables不适用于mac ”,它给出的代码
alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\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): No such file or directory
注意:我也移动源代码下面的别名没有区别。 我有git版本1.7.12.1
这应该是一个简单的改变。 有人可以帮帮我吗?
编辑10/13/12
不,我绝对不想自己定义__git_ps1,只是试图看看是否能够这样做。 是的,我已经安装了.git-completion.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-completion.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
你已经从master
安装了git-completion.bash
的版本 – 在git的开发历史中,这是一个将完成function中的__git_ps1
函数分割成一个新文件( git-prompt.sh
)的git-prompt.sh
。 介绍这个改变的承诺是解释理由,是af31a456 。
我仍然会build议你只是提供与你的git安装捆绑在一起的git-completion.bash
(或者git-prompt.sh
)的版本。
但是,如果由于某些原因,您仍然希望通过使用从master
单独下载的脚本来使用此function,则应该同样下载git-prompt.sh
:
curl -o ~/.git-prompt.sh \ https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
…并将以下行添加到~/.bash_profile
:
source ~/.git-prompt.sh
然后,包含__git_ps1 '%s'
PS1
variables应该可以正常工作。
升级到OSX 10.9 Mavericks之后,我不得不参考以下文件来获得git shell命令完成和git提示符以再次运行。
从我的.bash_profile或类似的:
if [ -f /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash ]; then . /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash fi source /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh #shell prompt example PS1='\u $(__git_ps1 "(%s)")\$ '
你应该
$ brew安装bash bash-completion git
然后在你的.bashrc中input“$(brew –prefix)/ etc / bash_completion”。
以下为我工作就像一个魅力:
在terminal中运行以下内容:
curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > ~/.bash_git
打开/创buildbash_profile:
$ vi ~/.bash_profile
将以下内容添加到文件中:
source ~/.bash_git export PS1='\[\033[01;32m\]os \[\033[01;34m\]\w $(__git_ps1 "[%s]")\$\[\033[00m\] ' export GIT_PS1_SHOWDIRTYSTATE=1 export GIT_PS1_SHOWUPSTREAM="auto"
最后,使用它来源:
$ source ~/.bash_profile
这将解决bash: __git_ps1: command not found
的问题bash: __git_ps1: command not found
。
此外您的提示将更改为“操作系统”。 要将“os”更改为其他内容,请在导出PS1行中修改“os”string。
MacOS Sierra和git版本2.10.1的解决scheme<2017-2-06>
第1步:安装Git
如果你已经安装了最新的git,你可以跳过这一步。
从浏览器下载git包https://git-scm.com/download/
注意:如果您使用curl [option] https://...
选项进行安装,则必须确保您的系统支持SSL。 所以对于新手而言,从浏览器下载并直接从git安装程序安装要容易得多。
安装validation:
- 在哪里显示你的git目录:
which git
- 显示你的git目前是哪个版本:
git --version
当前版本应该是2.10.1。
第2步:将你的gitconfiguration文件添加到你的shell
- 打开你的shellconfiguration文件:
-
nano ~/.bash_profile
或nano ~/.bash_profile
nano ~/.bashrc
取决于你修改的地方。
-
- 将下面的代码添加到文件中:
-
source /usr/local/git/contrib/completion/git-completion.bash
-
source /usr/local/git/contrib/completion/git-prompt.sh
-
注意:在OSX升级到El Capitain之后,git的安装位置从opt /目录更改为usr / local /,这就是为什么上面的一些旧的回答在MacOS Sierra中不能工作。
-
将以下代码添加到您的PS1configuration中:
-
选项1:直接添加到您的PS1:
export PS1='\w$(__git_ps1 "(%s)") > '
我更喜欢这个简单的方法,因为我已经知道
.git-completion.bash
在我的主目录中,我可以在其前面添加其他提示格式。 这里是我个人的提示,供大家参考:export PS1='\t H#\! \u:\w$(__git_ps1 "{%s}") -->> '
export PS1='\t H#\! \u:\w$(__git_ps1 "{%s}") -->> '
-
选项2:添加select脚本
如果[-f〜/ .git-completion.bash]; 然后 导出PS1 ='\ w $(__ git_ps1“(%s)”)>' 科幻
-
-
保存并使用configuration文件:
source ~/.bash_profile
或source ~/.bash_profile
source ~/.bashrc
现在你应该看到git提示符正常工作,并显示你现在在哪个分支。
升级到优胜美地时遇到同样的问题。
我只需要修改~/.bashrc
source /usr/local/etc/bash_completion.d/git-prompt.sh
而不是旧的path。
然后重新来源你的. ~/.bashrc
. ~/.bashrc
来获得效果。
bash的__git_ps1现在在/usr/local/etc/bash_completion.d的git-prompt.sh中find,在我的brew上安装了git 1.8.1.5
这在OS 10.8的.bash_profile中起作用
if [ -f ~/.git-prompt.sh ]; then source ~/.git-prompt.sh export PS1='YOURNAME[\W]$(__git_ps1 "(%s)"): ' fi
对于macports,我不得不添加: source /opt/local/share/git-core/git-prompt.sh
到我的./profile
如果你希望使用Homebrew来升级Git,并且让你的系统总体上变得过时(就像我一样),那么你可能需要把Homebrew自带到最新的版本(根据brew更新:以下未跟踪的工作树文件将被合并覆盖:谢谢@ chris-frisina)
首先把自制软件与当前版本一致
cd / usr / local
git获取原点
git reset –hard origin / master
然后更新Git:
酿造升级git
问题解决了! 😉
至less在Xcode 6中,你已经有了git-completion.bash
。 它在Xcode应用程序包中。
只需将此添加到您的.bashrc:
source `xcode-select -p`/usr/share/git-core/git-completion.bash
我知道这不是一个真正的答案
我在我的.bashrc中findgit-prompt.sh的一些奇怪的问题,所以我开始寻找其他解决scheme。 这一个: http ://www.jqno.nl/post/2012/04/02/howto-display-the-current-git-branch-in-your-prompt/不使用__git_ps1和作者声称它的作品也在Mac上(现在它在我的Ubuntu上完美工作,很容易调整)。
我希望它有帮助!
这个为我工作,它有提示颜色的git输出和一个指标是否文件已经改变/被添加,正确的烘焙:
GIT_PS1_SHOWDIRTYSTATE=true . /usr/local/Cellar/git/1.8.5.2/etc/bash_completion.d/git-completion.bash . /usr/local/Cellar/git/1.8.5.2/etc/bash_completion.d/git-prompt.sh PS1='\[\033[32m\]\u@\h\[\033[00m\]:\[\033[34m\]\w\[\033[31m\]$(__git_ps1)\[\033[00m\]\$ '
一定要使用正确的path! 我用自制软件来安装git,使用brew list git
来获取当前安装的path。
不要使用硬编码的path,但不知道如何获得当前安装的path。
更多信息: http : //en.newinstance.it/2010/05/23/git-autocompletion-and-enhanced-bash-prompt/
对于git,有/Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh
。 请看/etc/bashrc_Apple_Terminal
。
所以,我把这些放在~/.bash_profile
:
if [ -f /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh ]; then . /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh export GIT_PS1_SHOWCOLORHINTS=1 export GIT_PS1_SHOWDIRTYSTATE=1 PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND; }__git_ps1 '\u:\w' '\\\$ '" fi
我正在Udacity做git hub的课程,并且有同样的问题。 这是我最终的代码,使工作正常。
# Change command prompt 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 source ~/.git-prompt.sh export GIT_PS1_SHOWDIRTYSTATE=1 # '\u' adds the name of the current user to the prompt # '\$(__git_ps1)' adds git-related stuff # '\W' adds the name of the current directory export PS1="$purple\u$green\$(__git_ps1)$blue \W $ $reset"
- 从这个Git完成下载文件git-prompt.sh和git- completion.bash
- 重命名文件。
- 将这些文件移动到您的主目录。
-
将源文件添加到.bash_profile中
source ~/git-completion0.bash source ~/git-prompt0.sh and four to trigger the code block.