git命令行工作環境配置【轉】


轉自: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命令行工作環境配置

當然,我們可以使用別名的方法來使用這條命令:

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),就會看到列出所有匹配的可用命令建議。

如圖:

git命令行工作環境配置

設置命令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命令使用方法,歡迎留言分享~~~ 附:git使用手冊

來源:https://www.wellphone.me


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM