轉自:http://www.cocoachina.com/ios/20171115/21163.html
-
本文為CocoaChina網友whf5566投稿
前言
筆者一直使用git的圖形化工具sourceTree來管理代碼庫,日常工作中較少的使用git命令。但最近公司給配了一台舊電腦,配置太低,只有4G內存,Xcode,chrome等應用開多了非常卡頓,於是想到在終端使用git命令來工作。在重新熟悉了git命令,使用命令行工作一段時間后,覺得命令行下的git使用起來不是那么友好,比如沒有命令補全功能,查看日志界面不友好等。筆者折騰了一番,總算是弄了個讓自己滿意的git命令行配置。
git config 簡要介紹
git的配置選項有三種:–system,–global 和 –local。其中
system是系統級別的全局設置,對所有電腦用戶生效,文件在/etc/gitconfig;
global是個人用戶的全局配置,對所有個人用戶的代碼庫生效,文件在$HOME/.config/git/config或者~/.gitconfig;
local是代碼庫的設置,僅對設置的代碼庫生效,文件在代碼庫的.git/config。
git config常用命令
# 顯示全局配置信息 git config --global --list # 設置全局的用戶名和郵箱 git config --global user.name "wellphone" git config --global user.email wellphone@example.com # 開啟顏色 git config --global color.ui true
更加詳細的配置信息見Git-配置
設置別名
git 命令一般較長,如果想少輸入幾個字可以設置別名,如下:
git config --global alias.st status git config --global alias.ci commit git config --global alias.co checkout git config --global alias.br branch
經常敲命令的話,可以感受下使用別名帶來的高效率。 除此之外,還可以創造自己的命令。比方說取消暫存文件時的輸入比較繁瑣,可以自己設置一下:
git config --global alias.unstage 'reset HEAD --'
然后,取消暫存文件的時候,只需要輸入:
git unstage file
自定義log顯示
默認不用任何參數的話,git log會按提交時間列出所有的更新,最近的更新排在最上面。每次更新都有一個SHA-1校驗和、作者的名字和電子郵件地址、提交時間,最后縮進一個段落顯示提交說明。但是沒有圖形化的分支圖表來的直接美觀。還好,git給我們提供了一個常用的 –pretty選項,可以指定使用完全不同於默認格式的方式展示提交歷史。比如用 oneline將每個提交放在一行顯示,這在提交數很大時非常有用。另外還有 short,full 和 fuller 可以用,展示的信息完全可以按照自己的喜好來。
比如筆者自己配置的這條命令:
git log --color --graph --pretty=format:'%C(yellow)%h%Creset%C(cyan)%C(bold)%C(red)%d%Creset %s %C(green)[%cn] %Creset%C(cyan)[%cd]%Creset' --date=format-local:'%m-%d %H:%M'
圖:
當然,我們可以使用別名的方法來使用這條命令:
git config --global alias.lg "log --color --graph --pretty=format:'%C(yellow)%h%Creset%C(cyan)%C(bold)%C(red)%d%Creset %s %C(green)[%cn] %Creset%C(cyan)[%cd]%Creset' --date=format-local:'%m-%d %H:%M'"
輸入上條命令后,以后只需要輸入git lg就可以看到自定義顯示的log。
更多關於log配置信息可以查看Git-基礎-查看提交歷史
設置自動補全命令
git 命令沒有自動補全功能,這個在命令行下讓人非常抓狂,尤其是在各個分支間切換的時候,狂按tab鍵也不能補全分支的名字。還好,有git的資深開發為我等小白准備好了自動補全功能。
如果用的是Bash shell,到git的官方源碼庫中的git/contrib/compleion文件夾git compleiton下載git-completion.bash文件。 將該文件復制到你自己的用戶主目錄中(譯注:按照下面的示例,還應改名加上點:cp git-completion.bash ~/.git-completion.bash),並把下面一行內容添加到你的 .bashrc 文件中:
source ~/.git-completion.bash
在輸入 Git 命令的時候可以敲兩次跳格鍵(Tab),就會看到列出所有匹配的可用命令建議。
如圖:
設置命令prompt提示
我們在使用sourceTree的時候可以很方便看見當前工作的分支,work區,stage區的修改情況。但是在命令行下,我們需要執行git status才能知道這些信息,顯得不是很方便。這個情況也有資深開發替我們解決了。我們只需要簡單配置下就能在命令行的prompt提示中看見當前分支及修改情況。
同樣的我們需要在git官方代碼庫中下載git-prompt.sh文件。
1.將下載下來的文件復制到~目錄下。(e.g. ~/.git-prompt.sh)
2.將以下命令加入到~/.bash_profile或者是~/.bashrc文件里
source ~/.git-prompt.sh
3.修改自己的環境變量中的PS1值,PROMPT_COMMAND值
export PS1='[u@h W$(__git_ps1 " (%s)")]$ ' export PROMPT_COMMAND='__git_ps1 "u@h:W" "\$ "'
這時,在命令行提示符上已經可以顯示當前的分支名了。 4.設置如下環境變量值
export GIT_PS1_SHOWDIRTYSTATE=true export GIT_PS1_SHOWCOLORHINTS=true export GIT_PS1_SHOWUNTRACKEDFILES=true export GIT_PS1_SHOWUPSTREAM="auto"
如果設置GIT_PS1_SHOWDIRTYSTATE為非空值,則會使用(*)表示有文件未放入暫存區(unstaged files),(+)表示暫存區有文件(staged files)。
如果設置GIT_PS1_SHOWUNTRACKEDFILES為非空值,則會使用(%)表示有沒有加入到git中的文件(untracked files)。
如果設置GIT_PS1_SHOWCOLORHINTS為非空值,則會顯示顏色。 如果設置GIT_PS1_SHOWUPSTREAM=“auto”,則會使用(<)表示當前節點落后遠程分支,(>)表示遠程分支節點落后當前分支,(=)表示當前分支和遠程分支一樣,(<>)表示當前分支同遠程分支分叉了。 如圖:
總結
以上只是筆者在日常工作中碰見的一些簡單git配置方法,如果大家有更好更高效率的git命令使用方法,歡迎留言分享~~~ 附:git使用手冊