Team Treehouseのビデオをいくつか見てきましたが、Gitで作業しているときに非常に見栄えの良い端末があります。
たとえば、彼らは(似たようなもの)を持っています:
mike@treehouseMac: [/Work/test - feature-branch-name] $ git add .
mike@treehouseMac: [/Work/test - feature-branch-name] $ git commit -m "Some feature."
mike@treehouseMac: [/Work/test - feature-branch-name] $ git checkout master
mike@treehouseMac: [/Work/test - master] $ git status
必要なデータのビットを区別するための色を使用して、どのブランチに自分のブランチの有用な情報を表示できますか?まだ見つけていないデファクトプラグインがありますか?
Mac OSX 10.8を使用しています
プラグインに関するものではありません。シェルでのプロンプトトリックについてです。
Bashでのクールなセットアップについては、この男のdotfiles
プロジェクトをご覧ください。
https://github.com/mathiasbynens/dotfiles
派手なプロンプトを取得するには、.bash_Prompt
または~/.bash_profile
に~/.bashrc
を含めます。
質問とまったく同じプロンプトを表示するには、export PS1
の最後にある.bash_Prompt
行を次のように変更します。
export PS1="\[${BOLD}${Magenta}\]\u\[$WHITE\]@\[$ORANGE\]\h\[$WHITE\]: [\[$GREEN\]\w\[$WHITE\]\$([[ -n \$(git branch 2> /dev/null) ]] && echo \" - \")\[$PURPLE\]\$(parse_git_branch)\[$WHITE\]] \$ \[$RESET\]"
約1か月前にこのリポジトリのすべての.bash*
ファイルを使用することになりましたが、これは本当に役に立ちました。
Gitの場合、.gitconfig
に追加の特典があります。
そして、あなたはMacユーザーなので、.osx
にはさらに多くの利点があります。
簡単な方法
お気に入りのエディターで~/.bash_profile
を開き、次のコンテンツを下部に追加します。
プロンプトのGitブランチ。
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w - \$(parse_git_branch)\[\033[00m\] $ "
既存の優れた答えを拡張するために、見栄えの良い端末を取得する非常に簡単な方法は、オープンソースDotfilesプロジェクトを使用することです。
https://github.com/mathiasbynens/dotfiles
OSXおよびLinuxでのインストールは非常に簡単です。ターミナルで次のコマンドを実行します。
git clone https://github.com/mathiasbynens/dotfiles.git && cd dotfiles && source bootstrap.sh
これは:
cd
フォルダーに。私のプロンプトが含まれています:
rsync
- style user@Host:pathname
コピーアンドペーストの良さ例: これを行うには、以下を~/.bashrc
に追加します。
#
# Set the Prompt #
#
# Select git info displayed, see /usr/share/git/completion/git-Prompt.sh for more
export GIT_PS1_SHOWDIRTYSTATE=1 # '*'=unstaged, '+'=staged
export GIT_PS1_SHOWSTASHSTATE=1 # '$'=stashed
export GIT_PS1_SHOWUNTRACKEDFILES=1 # '%'=untracked
export GIT_PS1_SHOWUPSTREAM="verbose" # 'u='=no difference, 'u+1'=ahead by 1 commit
export GIT_PS1_STATESEPARATOR='' # No space between branch and index status
export GIT_PS1_DESCRIBE_STYLE="describe" # detached HEAD style:
# contains relative to newer annotated tag (v1.6.3.2~35)
# branch relative to newer tag or branch (master~4)
# describe relative to older annotated tag (v1.6.3.1-13-gdd42c2f)
# default exactly eatching tag
# Check if we support colours
__colour_enabled() {
local -i colors=$(tput colors 2>/dev/null)
[[ $? -eq 0 ]] && [[ $colors -gt 2 ]]
}
unset __colourise_Prompt && __colour_enabled && __colourise_Prompt=1
__set_bash_Prompt()
{
local exit="$?" # Save the exit status of the last command
# PS1 is made from $PreGitPS1 + <git-status> + $PostGitPS1
local PreGitPS1="${debian_chroot:+($debian_chroot)}"
local PostGitPS1=""
if [[ $__colourise_Prompt ]]; then
export GIT_PS1_SHOWCOLORHINTS=1
# Wrap the colour codes between \[ and \], so that
# bash counts the correct number of characters for line wrapping:
local Red='\[\e[0;31m\]'; local BRed='\[\e[1;31m\]'
local Gre='\[\e[0;32m\]'; local BGre='\[\e[1;32m\]'
local Yel='\[\e[0;33m\]'; local BYel='\[\e[1;33m\]'
local Blu='\[\e[0;34m\]'; local BBlu='\[\e[1;34m\]'
local Mag='\[\e[0;35m\]'; local BMag='\[\e[1;35m\]'
local Cya='\[\e[0;36m\]'; local BCya='\[\e[1;36m\]'
local Whi='\[\e[0;37m\]'; local BWhi='\[\e[1;37m\]'
local None='\[\e[0m\]' # Return to default colour
# No username and bright colour if root
if [[ ${EUID} == 0 ]]; then
PreGitPS1+="$BRed\h "
else
PreGitPS1+="$Red\u@\h$None:"
fi
PreGitPS1+="$Blu\w$None"
else # No colour
# Sets Prompt like: ravi@boxy:~/prj/sample_app
unset GIT_PS1_SHOWCOLORHINTS
PreGitPS1="${debian_chroot:+($debian_chroot)}\u@\h:\w"
fi
# Now build the part after git's status
# Highlight non-standard exit codes
if [[ $exit != 0 ]]; then
PostGitPS1="$Red[$exit]"
fi
# Change colour of Prompt if root
if [[ ${EUID} == 0 ]]; then
PostGitPS1+="$BRed"'\$ '"$None"
else
PostGitPS1+="$Mag"'\$ '"$None"
fi
# Set PS1 from $PreGitPS1 + <git-status> + $PostGitPS1
__git_ps1 "$PreGitPS1" "$PostGitPS1" '(%s)'
# echo '$PS1='"$PS1" # debug
# defaut Linux Mint 17.2 user Prompt:
# PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w\[\033[00m\] $(__git_ps1 "(%s)") \$ '
}
# This tells bash to reinterpret PS1 after every command, which we
# need because __git_ps1 will return different text and colors
Prompt_COMMAND=__set_bash_Prompt
このリンク の説明に従って、oh-my-zsh
プラグインをインストールするだけです。
MacOSおよびLinuxで最適に動作します。
基本インストール
Oh My Zshは、ターミナルで次のコマンドのいずれかを実行することによりインストールされます。これは、コマンドラインからcurl
またはwget
のいずれかでインストールできます。
via curl
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
via wget
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
システムにインストールされているgitパッケージには、有益なプロンプトの作成を支援するbashファイルが含まれています。色を作成するには、プロンプトに端末エスケープシーケンスを挿入する必要があります。そして最後の要素は、組み込み変数Prompt_COMMANDを使用して、各コマンドが実行された後にプロンプトを更新することです。
〜/ .bashrcを編集して次の項目を含めると、質問にプロンプトが表示され、いくつかの色の差がモジュロされます。
#
# Git provides a bash file to create an informative Prompt. This is its standard
# location on Linux. On Mac, you should be able to find it under your Git
# installation. If you are unable to find the file, I have a copy of it on my GitHub.
#
# https://github.com/chadversary/home/blob/42cf697ba69d4d474ca74297cdf94186430f1384/.config/kiwi-profile/40-git-Prompt.sh
#
source /usr/share/git/completion/git-Prompt.sh
#
# Next, we need to define some terminal escape sequences for colors. For a fuller
# list of colors, and an example how to use them, see my bash color file on my GitHub
# and my coniguration for colored man pages.
#
# https://github.com/chadversary/home/blob/42cf697ba69d4d474ca74297cdf94186430f1384/.config/kiwi-profile/10-colors.sh
# https://github.com/chadversary/home/blob/42cf697ba69d4d474ca74297cdf94186430f1384/.config/kiwi-profile/40-less.sh
#
color_start='\e['
color_end='m'
color_reset='\e[0m'
color_bg_blue='44'
#
# To get a fancy git Prompt, it's not sufficient to set PS1. Instead, we set Prompt_COMMAND,
# a built in Bash variable that gets evaluated before each render of the Prompt.
#
export Prompt_COMMAND="PS1=\"\${color_start}\${color_bg_blue}\${color_end}\u@\h [\w\$(__git_ps1 \" - %s\")]\${color_reset}\n\$ \""
#
# If you find that the working directory that appears in the Prompt is ofter too long,
# then trim it.
#
export Prompt_DIRTRIM=3
多くのPS1ジェネレーターがありますが、 ezprompt にはgit status(2番目のタブ 'Status Elements')もあります。
6LYTH3の回答に基づいて、いくつかの改善が役立つ可能性があるため、自分で投稿することにしました。
簡単な解決策
~/.bash_profile
を開き、次のコンテンツを追加します
# \[\e[0m\] resets the color to default color
reset_color='\[\e[0m\]'
# \[\033[33m\] sets the color to yellow
path_color='\[\033[33m\]'
# \e[0;32m\ sets the color to green
git_clean_color='\[\e[0;32m\]'
# \e[0;31m\ sets the color to red
git_dirty_color='\[\e[0;31m\]'
# determines if the git branch you are on is clean or dirty
git_Prompt ()
{
# Is this a git directory?
if ! git rev-parse --git-dir > /dev/null 2>&1; then
return 0
fi
# Grab working branch name
git_branch=$(git branch 2>/dev/null| sed -n '/^\*/s/^\* //p')
# Clean or dirty branch
if git diff --quiet 2>/dev/null >&2; then
git_color="${git_clean_color}"
else
git_color="${git_dirty_color}"
fi
echo " [$git_color$git_branch${reset_color}]"
}
export PS1="${path_color}\w\[\e[0m\]$(git_Prompt)\n"
これは:
1) Prompt the path you're in, in color: path_color.
2) Tell you which branch are you.
3) Color the name of the branch based on the status of the branch with git_clean_color
for a clean work directory and git_dirty_color for a dirty one.
4) The brackets should stay in the default color you established in your computer.
5) Puts the Prompt in the next line for readability.
これで色をカスタマイズできます list
洗練されたソリューション
別のオプションは、Git Bash Promptを使用して、 this でインストールすることです。 Mac OS XでHomebrew経由でオプションを使用しました。
git_Prompt_list_themes
テーマを表示しますが、私はそれらのどれも好きではありませんでした。
git_Prompt_color_samples
を使用して、使用可能な色を確認します。
git_Prompt_make_custom_theme [<Name of base theme>]
で新しいカスタムテーマを作成します。これにより、.git-Prompt-colors.shファイルが作成されます。
subl ~/.git-Prompt-colors.sh
でgit-Prompt-colors.shを開き、カスタマイズします:
.git-Prompt-colors.shファイルは、カスタマイズすると次のようになります。
override_git_Prompt_colors() {
GIT_Prompt_THEME_NAME="Custom"
# Clean or dirty branch
if git diff --quiet 2>/dev/null >&2; then
GIT_Prompt_BRANCH="${Green}"
else
GIT_Prompt_BRANCH="${Red}"
fi
}
reload_git_Prompt_colors "Custom"
これがお役に立てば幸いです!