溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

個(gè)性定制你的 Git 命令行提示符

發(fā)布時(shí)間:2020-08-08 03:05:36 來(lái)源:網(wǎng)絡(luò) 閱讀:2830 作者:Professor哥 欄目:軟件技術(shù)

1, 讓BASH 命令行顯示當(dāng)前支線 以及 顯示提交狀態(tài) 并且使用不同顏色高亮區(qū)分


效果圖:

個(gè)性定制你的 Git 命令行提示符

個(gè)性定制你的 Git 命令行提示符

進(jìn)入到git的工作目錄后,顯示當(dāng)前所在支線名稱

如果有已跟蹤 未暫存的版本,那么使用紅色* 提示

如果有已跟蹤 未提交的版本,那么使用**** 提示

切換到其他支線后 提示符能打印當(dāng)前支線名稱

切換到非Git工作目錄后,不影響其他操作。


定制原理:主要就是修改 PS1 變量(如果不知道PS1是什么,那么請(qǐng)先了解)。

修改bashrc  不管是全局的,還是當(dāng)前用戶的 

function get_git_branch_now  {
        git branch --no-color 2> /dev/null | awk '/\*/{printf "\033[34m[>"$2"]\033[0m" }'
        return 0
}
function get_git_status_now {
        git status 2> /dev/null | grep -q "Unmerged paths" && echo -e '\033[41;37m*\033[0m' &&  return 0                #合并沖突狀態(tài)
        git status 2> /dev/null | grep -qE "Changes not staged for commit|Changed but not updated" && echo -e '\033[31m*\033[0m' &&  return 0   #未暫存狀態(tài)
        git status 2> /dev/null | grep -q "Changes to be committed" && echo -e '\033[33m*\033[0m' &&  return 0  #未提交狀態(tài)
}

  [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="\[\e[36m\][\u\[\e[0m\]\[\e[5m\]@\[\e[0m\]\h \[\e[32m\]\w\[\e[36m\]]\[\e[0m\]\$(get_git_branch_now)\$(get_git_status_now)\\$ "

這樣就能顯示圖中的效果了,當(dāng)然我這里的PS1 有點(diǎn)復(fù)雜,如果你能看懂最后兩個(gè)變量引用,那么自然就理解了。

2016.01.23更新,修復(fù)了在os x下運(yùn)行不正常的問(wèn)題。



2,讓Git的日常輸出更友好,以及自定義log格式

git默認(rèn)的輸出是單一顏色的,不僅不夠美觀,也不容易閱讀。實(shí)際上,git本身就支持用多種顏色來(lái)顯示其輸出的信息,只需在命令行中運(yùn)行以下命令來(lái)修改git的設(shè)置,即可開啟多顏色輸出:

git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto

執(zhí)行以上命令后,git的status, diff和branch等諸命令的輸出就都是帶有顏色的了。見下圖示例。

個(gè)性定制你的 Git 命令行提示符

自定義log格式

完成上述步驟后,git log 命令的輸出雖然有了點(diǎn)顏色,但還是顯得枯燥(見下圖)。

個(gè)性定制你的 Git 命令行提示符

不要緊,強(qiáng)大的git提供了自定義log格式的功能,嘗試輸入以下命令:

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

你將看到類似下圖的輸出:

個(gè)性定制你的 Git 命令行提示符

怎么樣,不賴吧?不過(guò),每次查看log都輸出這么一長(zhǎng)串的命令,實(shí)在是不太現(xiàn)實(shí)。咱們來(lái)通過(guò)git的命令別名來(lái)解決這個(gè)問(wèn)題。輸入以下命令:

git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'"

上述命令將創(chuàng)建一個(gè)命令別名 lg,每次你使用命令 git lg 就相當(dāng)于輸入了剛才那一長(zhǎng)串命令?,F(xiàn)在,如果想看美觀的多顏色輸出,就使用 git lg,如果想看普通的log輸出,就使用 git log,二者互不干擾。

如果你想讓log輸出某些特定的信息,可以自己調(diào)整 --pretty 參數(shù)的值,例如下面的命令將只顯示commit的hash,提交時(shí)間,提交者姓名:

git log --pretty=format:'%h %ar %an'

format后面單引號(hào)中的內(nèi)容替換為你想要的格式,即可實(shí)現(xiàn)自定義的log輸出格式。這里的%h%ar等是一些git預(yù)定義的占位符,完整列表如下:


個(gè)性定制你的 Git 命令行提示符


Git 版本控制管理

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI