題 如何讓git-completion.bash在Mac OS X上運行?


我跟著 http://blog.bitfluent.com/post/27983389/git-utilities-you-cant-live-without 至 加 git-completion.bash 對我的 /opt/local/etc/bash_completion.d/git-completion

我放了 PS1='\h:\W$(__git_ps1 "(%s)") \u\$ ' 在我的.bashrc_profile中

但現在我得到了這個 -bash: __git_ps1: command not found 我做的每件事 cd

你能告訴我我錯過了什麼嗎?


88
2017-08-29 00:49


起源


也可以看看: trac.macports.org/wiki/howto/bash-completion - Ioannis Filippidis


答案:


我用git安裝了 MacPorts的 在我的新Snow Leopard安裝上。從.dmg映像安裝MacPorts後,這些將是Terminal.app中的命令:

sudo port selfupdate
sudo port install git-core +bash_completion

如果您還需要支持從SVN存儲庫和文檔中提取,請使用此代替第二行:

sudo port install git-core +bash_completion +doc +svn

然後將以下內容添加到〜/ .profile或〜/ .bash_profile:

#MacPorts Bash shell命令完成
if [-f / opt / local / etc / bash_completion];然後
    。 /選擇/本地/ etc / bash_completion
科幻

或者自Mountain Lion版本2.1.2以來的MacPorts:

#MacPorts Bash shell命令完成
if [-f /opt/local/etc/profile.d/bash_completion.sh];然後
  。 /opt/local/etc/profile.d/bash_completion.sh
科幻

或者對於具有較新版本git的MacPorts:

if [-f /opt/local/share/git-core/git-prompt.sh];然後
    。 /opt/local/share/git-core/git-prompt.sh
科幻

注意:bash_completion.sh需要bash 4.1或更高版本。如果完成不起作用嘗試 echo $BASH_VERSION 看看這是不是問題。如果是這樣,請輸入MacPorts bash bash 並再次嘗試git完成。


65
2017-08-30 08:03



我只是複制粘貼,我仍然得到OP的錯誤。 = \。你怎麼知道包括什麼?我沒有bash_completion來源 - NullVoxPopuli
請注意,對於較新版本的git / macport / bash-completion,提示符位於不同的文件中。看到: trac.macports.org/ticket/36334  if [ -f /opt/local/share/git-core/git-prompt.sh ]; then . /opt/local/share/git-core/git-prompt.sh fi - Yehosef
因為 /opt/local/etc/profile.d/bash_completion.sh 需求 $BASH_VERSION 4.1或更高版本,我必須在Mac OS X 10.8.3上使用MacPorts 2.1.3執行以下操作:從默認情況下切換Mac OS X登錄shell /bin/bash (3.2.48(1) - 釋放)到MacPorts /opt/local/bin/bash (4.2.42(2)-release)如下所述:stackoverflow.com/a/791244/287984。基本上 if [ `grep /opt/local/bin/bash /etc/shells` ]; then echo /opt/local/bin/bash | chsh -s /opt/local/bin/bash; else echo /opt/local/bin/bash | sudo tee -a /etc/shells; chsh -s /opt/local/bin/bash; fi - Uwe Günther
對我來說很棒。不得不更換 /bin/bash 在Terminal.app中 /opt/local/bin/bash 來自macports +所有 .bash_profile 這裡建議改變。 - bgs
要轉到bash 4.1或更高版本,您可以按照此處的說明操作: apple.stackexchange.com/questions/70132/... - ThomasW


如果您使用自製軟件安裝git,可能會稍微調整一下MacPorts的建議,並將其添加到您的 .bash_profile 和 .bashrc

if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then
. `brew --prefix`/etc/bash_completion.d/git-completion.bash
fi

檢查是否已使用自製軟件正確安裝git的最佳方法是執行

brew info git

並檢查git bash完成的安裝目錄的輸出

最新版本的Git(1.7.12)還需要以下內容才能啟用提示。

if [ -f `brew --prefix`/etc/bash_completion.d/git-prompt.sh ]; then
    . `brew --prefix`/etc/bash_completion.d/git-prompt.sh
fi

54
2018-06-21 19:39



有關更多信息 __git_ps1,見 superuser.com/a/477749/90231 回答這個堆棧。 - RichVel


你需要做的就是放置 git-completion.bash 在您的用戶主頁中的文件 bin 目錄並將以下內容放入您的手中 .profile 要么 .bash_profile 文件:

export PATH="$HOME/bin:$PATH"
source ~/bin/git-completion.bash
PS1='[\u@\h \w$(__git_ps1 " (%s)")]\$ '

這樣做是為了確保您的本地bin位於PATH和 source 命令讓事情順利進行。當然,PS1更改會將當前簽出的分支放入提示中。

因此,沒有安裝MacPort然後安裝GIT的“完成”版本(如果你已經安裝了它,那就特別惱火)。


26
2018-05-27 05:39



github.com/git/git/raw/master/contrib/completion/... - Nickolay
對於那些想知道如何在提示中將PS1與顏色結合起來的人,請參閱: stackoverflow.com/questions/816790/... - Nickolay
更確切地說,git-completion.bash只需要在你的某個地方 $PATH。我決定把我的 /usr/local/bin/ 所以我沒有必要修改我現有的 $PATH。 - metavida


雖然目前的答案對於較舊的MacPorts是正確的,但是最新的MacPorts存在新的問題,導致相同的錯誤。

目前 慶典完成 package(2.0 r1)至少需要一個bash 4.1才能正常運行。通常的OS X終端使用 /bin/bash 它只獲得3.x.您必須更改要使用的終端設置 /opt/local/bin/bash -l 如下面的MacPorts文檔中所述: http://trac.macports.org/wiki/howto/bash-completion


13
2017-07-19 08:49



這是最正確的答案,因為我在更新macport後才開始遇到問題。從終端使用macports bash的唯一缺點是,當我嘗試關閉終端窗口時,它現在警告我終止正在運行的進程 - 你遇到過這種情況嗎? - vitch


您需要獲取命令完成功能。在PS1之前添加到.bashrc_profile:

. /opt/local/etc/bash_completion.d/git-completion

6
2017-08-29 01:19



git-completion.bash可以在這裡找到: raw.github.com/git/git/master/contrib/completion/... - TJ Biddle


令人討厭的是,這​​又被打破了。這次是版本1.7.12-1的git人。為了讓人們只具有提示功能而沒有完成功能(可能會減慢速度),他們將bash_completion / git中的提示功能重構為自己的文件git-prompt.sh。

因此,如@Lara所述添加bash_completion只會讓您完成(點擊標籤完成標記/分支名稱)。

得到的 __git_ps1 所以你可以在PS1提示中使用它,你還需要在〜/ .profile中添加以下內容。

. /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh

一些背景在這裡 - https://bbs.archlinux.org/viewtopic.php?pid=1163632#p1163632


5
2017-09-21 00:15



有問題的文件: raw.github.com/git/git/master/contrib/completion/git-prompt.sh - papercowboy


或者 家釀

brew install bash-completion git-extras

3
2018-01-16 04:18



非常感謝。它應該是 brew install bash-completion git-extras 雖然(破折號而不是下劃線)。 - simonair


找到一個解決方案 類似的問題

混帳OSX的安裝程序 附帶 git-completion.bash 並安裝到 /usr/local/git/contrib/completion/。只需從你的文件中獲取該文件 .bash_profile 要得到 __git_ps1


2
2017-07-08 18:07





對於Mountain Lion和Mac-Ports,我需要在.bash_profile中使用以下行來使__git_ps1和完成正常運行:

# Bash shell command completion
if [ -f /opt/local/share/doc/git-core/contrib/completion/git-completion.bash ]; then
  . /opt/local/share/doc/git-core/contrib/completion/git-completion.bash
fi

if [ -f /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh ]; then
  . /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh
fi

2
2017-12-07 06:32