thanx to 我的 Git 偏好設定 & 为 Mac OS 添加 Bash Completion
請修改 home 目錄的 ~/.bash_profile
檔案 (我是用 Bash)。
function git_branch {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return;
echo "("${ref#refs/heads/}") ";
}
function git_since_last_commit {
now=`date +%s`;
last_commit=$(git log --pretty=format:%at -1 2> /dev/null) || return;
seconds_since_last_commit=$((now-last_commit));
minutes_since_last_commit=$((seconds_since_last_commit/60));
hours_since_last_commit=$((minutes_since_last_commit/60));
minutes_since_last_commit=$((minutes_since_last_commit%60));
echo "${hours_since_last_commit}h${minutes_since_last_commit}m ";
}
PS1="[\[\033[1;32m\]\w\[\033[0m\]] \[\033[0m\]\[\033[1;36m\]\$(git_branch)\[\033[0;33m\]\$(git_since_last_commit)\[\033[0m\]$ "
這樣按 tab 就會有自動完成的效果, 包括 git checkout 時都可以抓到你的 branch 名稱。
brew install bash-completion
cp /usr/local/etc/bash_completion.d/git-completion.bash ~/.git-bash-completion.sh
(這套件其實包括很多 autocompletion script,你可以去 /usr/local/etc/bash_completion.d
這個目錄找找看。)
~/.bash_profile
加入[ -f ~/.git-bash-completion.sh ] && . ~/.git-bash-completion.sh
下面的 git 設定檔的位置在 ~/.gitconfig
可以直接修改檔案。
這樣 Git 指令的輸出結果才會加上顏色,像是 git status 等:
git config --global color.ui true
但是我可能是裝了 zsh 檔案格式是寫成這樣
[color]
ui = true
git config --global core.editor
git config --global merge.tool opendiff
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
另一種格式:
[alias]
co = checkout
ci = commit
st = status
br = branch
這樣只要輸入 git st 就是 git status 了。
用 brew 安装 zsh
chsh -s /usr/local/bin/zsh
報錯 沒有支援的 shell??
chsh: /usr/local/bin/zsh: non-standard shell
這裡:終端機的偏好設定 GUI 可以更改預設開啟 然後 iterm 也可以在偏好設定裡更改...
http://icarus4.logdown.com/ icarus4's blog
不過即使 oh-my-zsh 再好用,還是有一些自動補全的功能沒有包含在裡面。 例如說如果你在 bash 底下有安裝 bash-completion,會發現你用 homebrew 再按下 tab 時可以自動補全套件的名稱...
類似的 homebrew 補全功能在 oh-my-zsh 是沒有納入的,所以需要透過自行撰寫,或者利用類似 zsh-completions 這樣的套件來補足。