I'm trying to change my command promt in terminal. I keep getting the error:
-bash: __git_ps1: command not found
I've tried it just by typing it into the terminal as is: __git_ps1
. I've also tried it out in the .bash_profile
if [ -f ~/.git-completion.bash ]; then
source ~/.git-completion.bash
export PS1='[\W]$(__git_ps1 "(%s)"): '
fi
As you might be able to see/tell, yes, I do have the auto-completion installed and it does work great!
I came across this question: " PS1 env variable does not work on mac " which gives the code
alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"
So I add it to my .bash_profile
hoping that it will change something. Well, it did. It just changed the error output.
Here's the .bash_profile
with the addition:
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
And now here's the changed error output:
sed: (%s): No such file or directory
Note: I've also moved the alias below the source with no difference. I have git version 1.7.12.1
This should be a simple change. Can someone please help me?
Edit 10/13/12
No, I definitely do not want to define __git_ps1 myself but was just trying to see if it would be recognized by doing so. Yes, I have the .git-completion.bash
file installed. Here's how I got auto completion on my machine.
cd ~
curl -OL https://github.com/git/git/raw/master/contrib/completion/git-completion.bash
mv ~/git.completion.bash ~/.git-completion.bash
A ls -la
then lists the .git-completion.bash
file.
Edit 10/13/12 - Solved by Mark Longair (below)
The following code worked for me in the .bash_profile
while others did not...
if [ -f ~/.git-prompt.sh ]; then
source ~/.git-prompt.sh
export PS1='Geoff[\W]$(__git_ps1 "(%s)"): '
fi
You've installed the version of git-completion.bash
from master
- in git's development history this is after a commit that split out the __git_ps1
function from the completion functionality into a new file (git-prompt.sh
). The commit that introduced this change, which explains the rationale, is af31a456.
I would still suggest that you just source the version of git-completion.bash
(or git-prompt.sh
) that is bundled with your installation of git.
However, if for some reason you still want to use this functionality by using scripts separately downloaded from master
, you should download git-prompt.sh
similarly:
curl -o ~/.git-prompt.sh \
https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
... and add the following line to your ~/.bash_profile
:
source ~/.git-prompt.sh
Then your PS1
variable that includes __git_ps1 '%s'
should work fine.
After upgrading to OSX 10.9 Mavericks I had to reference the following files to get git shell command completion and git prompt to work again.
From my .bash_profile or similar:
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)")\$ '
You should
$ brew install bash bash-completion git
Then source "$(brew --prefix)/etc/bash_completion" in your .bashrc.
Following worked for me like a charm:
Run following in your Terminal:
curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > ~/.bash_git
Open/Create bash_profile:
$ vi ~/.bash_profile
Add following to the file:
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"
Finally, source it using:
$ source ~/.bash_profile
This will solve the problem of bash: __git_ps1: command not found
.
Also your prompt will change to "os ". To change "os" to something else, modify "os" string in export PS1 line.
Solution for MacOS Sierra and git version 2.10.1 <2017-2-06>
Step 1: Install the Git
You can skip this step if you already installed the latest git.
Download git package from browser https://git-scm.com/download/
Note: if you install with curl [option] https://...
option to download, you would have to make sure your system support SSL. So for new comer, to download from browser and install directly from git installer is much easier.
- Show where is your git directory at:
which git
- Show which version your git currently is:
git --version
current version should be 2.10.1.
Step 2: Add your git profile to your shell
- Open your shell profile:
nano ~/.bash_profile
ornano ~/.bashrc
Depends on where your modification is.
- Add the following code to the file:
source /usr/local/git/contrib/completion/git-completion.bash
source /usr/local/git/contrib/completion/git-prompt.sh
Note: git installation location changed from opt/ directory to usr/local/ after OSX upgrade to El Capitain, and this is why some of the old answer above doesn't work anymore in MacOS Sierra.
Add the following code to your PS1 configuration:
Option 1: add directly to your PS1:
I prefer this simple approach since I already know theexport PS1='\w$(__git_ps1 "(%s)") > '
.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
orsource ~/.bashrc
I had same problem when upgrading to Yosemite.
I just had to modify ~/.bashrc
to source /usr/local/etc/bash_completion.d/git-prompt.sh
instead of the old path.
then re-source your . ~/.bashrc
to get the effect.
__git_ps1 for bash is now found in git-prompt.sh in /usr/local/etc/bash_completion.d on my brew installed git version 1.8.1.5
this works in OS 10.8 in the .bash_profile
if [ -f ~/.git-prompt.sh ]; then
source ~/.git-prompt.sh
export PS1='YOURNAME[\W]$(__git_ps1 "(%s)"): '
fi
For macports I had to add: source /opt/local/share/git-core/git-prompt.sh
to my ./profile
If you're hoping to use Homebrew to upgrade Git and you've let your system become out-of-date in general (as I did), you may need to bring Homebrew itself up-to-date first (as per brew update: The following untracked working tree files would be overwritten by merge: thanks @chris-frisina)
First bring Homebrew into line with the current version
cd /usr/local
git fetch origin
git reset --hard origin/master
Then update Git:
brew upgrade git
Problem Solved! ;-)
At least with Xcode 6, you already have git-completion.bash
. It's inside the Xcode app bundle.
Just add this to your .bashrc:
source `xcode-select -p`/usr/share/git-core/git-completion.bash
High Sierra clean solution with colors !
No downloads. No brew. No Xcode
Just add it to your ~/.bashrc or ~/.bash_profile
export CLICOLOR=1
[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh ] && . /Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh
export GIT_PS1_SHOWCOLORHINTS=1
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUPSTREAM="auto"
PROMPT_COMMAND='__git_ps1 "\h:\W \u" "\\\$ "'
I know it's not a real answer...
I had some strange issues with sourcing git-prompt.sh in my .bashrc so I started to look for other solution. This one: http://www.jqno.nl/post/2012/04/02/howto-display-the-current-git-branch-in-your-prompt/ doesn't use __git_ps1 and author claims it works also on Mac (for now it works perfectly on my Ubuntu and it's easy to tweak).
I hope it helps!
I was doing the course on Udacity for git hub and was having this same issue. Here is my final code that make is work correctly.
# 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"
It works! https://i.stack.imgur.com/d0lvb.jpg
- Download the files git-prompt.sh and git-completion.bash from this Git completion
- Rename the files.
- Move those files to your home directory.
Add the source file in to the .bash_profile
source ~/git-completion0.bash source ~/git-prompt0.sh and four to trigger the code block.
This one worked for me, and it has colored git output and an indicator in the prompt whether files have changed / been added, right baked into it:
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\]\$ '
Be sure to use the correct path! I used homebrew to install git, use brew list git
to get the path to your current installation.
Would be nice not to use a hard coded path, but don't know how to get the path to the current installation.
More infos here: http://en.newinstance.it/2010/05/23/git-autocompletion-and-enhanced-bash-prompt/
For git, there are /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh
. And please look /etc/bashrc_Apple_Terminal
too.
So, I put these in ~/.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
来源:https://stackoverflow.com/questions/12870928/mac-bash-git-ps1-command-not-found