????本文主要是為了說明要怎么把git配置得更加容易使用劫笙,環(huán)境是在Ubuntu系統(tǒng)里面,其他的Linux系統(tǒng)我不敢保證有效试躏。
? ? 配置的緣由和初衷:
? ? 我曾經(jīng)修改過windows下的git環(huán)境,做了一下優(yōu)化工作,發(fā)現(xiàn)用起來也是挺方便的明棍。具體的優(yōu)化為在對repository的內(nèi)容修改過之后,增加提示符顯示當(dāng)前的branch究竟是哪一個寇僧,在后面加*來提示已經(jīng)有變動未曾Commit?
? ? 但是當(dāng)去到Ubuntu的時候摊腋,發(fā)現(xiàn)并沒有預(yù)設(shè)提示信息沸版,用起來會覺得沒有那么方便,為了解決這個問題兴蒸,我搜集了很多的資料视粮,最后終于找到了解決的方法,優(yōu)化了git的使用環(huán)境橙凳。
????實現(xiàn)的幾個步驟:
? ? 1.安裝git
? ? 2.引用git提供的方法來找branch
? ? 3.寫一段小程序來判斷是否有變化發(fā)生
? ? 4.調(diào)用前面2和3的文件
(注意:以下內(nèi)容以#開頭蕾殴,則為在終端輸入的命令行)
? 1.安裝git
? ? ? ? 安裝的命令
? ??????# add-apt-repository ppa:git-core/ppa
????????# apt update
????????# apt install git
????????驗證安裝成功:
? ? ? ? ? 輸入命令看是否顯示git版本? #git --version
? ? 2.引用git提供的方法來找branch
? ? ? ? 其實git已經(jīng)幫我們做好了找branch和顯示狀態(tài)的代碼,然而它是放在一個很特別的地方岛啸,一般來說它的路徑應(yīng)該是/usr/lib/git-core/git-sh-prompt钓觉。找到這個文件把它的內(nèi)容復(fù)制到新建文件的~/.git-prompt.sh下。下面就是實現(xiàn)的具體代碼坚踩,我使用的sublime文本編輯器荡灾,所以打開命令為subl,如果你用的是其他文本編輯器堕虹,請寫入對應(yīng)的打開命令卧晓。
????????創(chuàng)建.git-prompt.sh文件:
????????1).創(chuàng)建空文件:#subl ~/.git-prompt.sh
????????2).打開文件: #subl /usr/lib/git-core/git-sh-prompt
????????3).把git-sh-prompt的內(nèi)容復(fù)制到.git-prompt.sh中,保存文件
? ? 3.寫一段小程序來判斷是否有變化發(fā)生
? ? ? ? 以下的方法是參考一個在GitHub上的代碼(git-aware-prompt)【只用了后面一個函數(shù)】
? ? ? ? ????創(chuàng)建.git-modi-prompt.sh文件
????????????1).創(chuàng)建空文件:#subl ~/.git-modi-prompt.sh
????????????2).粘貼一下代碼到文件中(粘貼后請自己調(diào)整縮進(jìn))
? ? ? ? ? ?(用于提示是否有更改而未commit的內(nèi)容)
????????find_git_dirty() {
????????local status=$(git status --porcelain 2> /dev/null)
? ? ? ? if [[ "$status" != "" ]]; then
????????????git_dirty='*'
????????? else
? ????????? git_dirty=''
????? fi
? ? ?}
????PROMPT_COMMAND="find_git_dirty; $PROMPT_COMMAND"
? ? 4.調(diào)用前面2和3的文件
? ? ? ? 在配置文件中設(shè)置引用前面的兩個文件赴捞。下面的代碼中source就是用于說明引用文件的位置逼裆,PS1用于設(shè)置Ubuntu的終端shell提示符顯示的內(nèi)容
? ? ? ? 1)打開.bashrc配置文件
????????????????#subl ~/.bashrc
????????2)在文件末尾添加:
????????????????source ~/.git-prompt.sh
????????????????source ~/.git-modi-prompt.sh
????????????????source /usr/share/bash-completion/completions/git
????????????????export PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:"'$(__git_ps1 " (\[\033[01;31m\]%s\[\033[00m\] $git_dirty)")'"\[\033[01;34m\]\w\[\033[00m\]\$ "
? ? ? ? ? ? ? ? 最后的export代碼,里面有好幾個地方都是設(shè)置顏色的內(nèi)容赦政,如果把所有顏色的代碼去掉胜宇,其實就是:
? ???????????export PS1="\u@\h:"'$(__git_ps1 " (%s$git_dirty)")'"\w\$ "
? ? ? ? ? ?在這里面,\u代表用戶名恢着,\h代表主機(jī)名(host)桐愉,__git_ps1“%s”是用于顯示當(dāng)前的branch,$git_dirty是用于顯示提示有修改的*符號掰派,\w是用于顯示當(dāng)前路徑
? ? ? ? ? ? 如果要更深一層了解內(nèi)容可以看一下篇簡書(讓 Shell 命令提示符顯示 Git 分支名稱)