git config配置文件
一.Git已經(jīng)在你的系統(tǒng)中了,你會(huì)做一些事情來客戶化你的Git環(huán)境。你只需要做這些設(shè)置一次;即使你升級(jí)了,他們也會(huì)綁定到你的環(huán)境中。你也可以在任何時(shí)刻通過運(yùn)行命令來重新更改這些設(shè)置。
Git有一個(gè)工具被稱為git config,它允許你獲得和設(shè)置配置變量;這些變量可以控制Git的外觀和操作的各個(gè)方面。這些變量可以被存儲(chǔ)在三個(gè)不同的位置:
1./etc/gitconfig 文件:包含了適用于系統(tǒng)所有用戶和所有庫的值。如果你傳遞參數(shù)選項(xiàng)’--system’ 給 git config,它將明確的讀和寫這個(gè)文件。
2.~/.gitconfig 文件 :具體到你的用戶。你可以通過傳遞--global 選項(xiàng)使Git 讀或?qū)戇@個(gè)特定的文件。
3.位于git目錄的config文件 (也就是 .git/config) :無論你當(dāng)前在用的庫是什么,特定指向該單一的庫。每個(gè)級(jí)別重寫前一個(gè)級(jí)別的值。因此,在.git/config中的值覆蓋了在/etc/gitconfig中的同一個(gè)值。
在Windows系統(tǒng)中,Git在$HOME目錄中查找.gitconfig文件(對(duì)大多數(shù)人來說,位于C:\Documents and Settings\$USER下)。它也會(huì)查找/etc/gitconfig,盡管它是相對(duì)于Msys 根目錄的。這可能是你在Windows中運(yùn)行安裝程序時(shí)決定安裝Git的任何地方。
二.你的標(biāo)識(shí)(Your Identity)
2.1 當(dāng)你安裝Git后首先要做的事情是設(shè)置你的用戶名稱和e-mail地址。這是非常重要的,因?yàn)槊看蜧it提交都會(huì)使用該信息。它被永遠(yuǎn)的嵌入到了你的提交中:
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
重申一遍,你只需要做一次這個(gè)設(shè)置。如果你傳遞了 --global 選項(xiàng),因?yàn)镚it將總是會(huì)使用該信息來處理你在系統(tǒng)中所做的一切操作。如果你希望在一個(gè)特定的項(xiàng)目中使用不同的名稱或e-mail地址,你可以在該項(xiàng)目中運(yùn)行該命令而不要--global選項(xiàng)。
2.2 你的編輯器(Your Editor)
現(xiàn)在,你的標(biāo)識(shí)已經(jīng)設(shè)置,你可以配置你的缺省文本編輯器,Git在需要你輸入一些消息時(shí)會(huì)使用該文本編輯器。缺省情況下,Git使用你的系統(tǒng)的缺省編輯器,這通??赡苁莢i 或者 vim。如果你想使用一個(gè)不同的文本編輯器,例如Emacs,你可以做如下操作:
$ git config --global core.editor emacs
2.3 你的比較工具(Your Diff Tool)
另外一個(gè)你可能需要配置的有用的選項(xiàng)是缺省的比較工具它用來解決合并時(shí)的沖突。例如,你想使用vimdiff:
$ git config --global merge.tool vimdiff
Git可以接受kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, 和 opendiff作為有效的合并工具。你也可以設(shè)置一個(gè)客戶化的工具;查看第7章獲得更多關(guān)于此的信息。
2.4 檢查你的設(shè)置(Checking Your Settings)
如果你想檢查你的設(shè)置,你可以使用 git config --list 命令來列出Git可以在該處找到的所有的設(shè)置:
$ git config --list
user.name=Scott Chacon
user.email=schacon@gmail.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...
你可能會(huì)看到一個(gè)關(guān)鍵字出現(xiàn)多次,這是因?yàn)镚it從不同的文件中(例如:/etc/gitconfig以及~/.gitconfig)讀取相同的關(guān)鍵字。 在這種情況下,對(duì)每個(gè)唯一的關(guān)鍵字,Git使用最后的那個(gè)值。
你也可以查看Git認(rèn)為的一個(gè)特定的關(guān)鍵字目前的值,使用如下命令 git config {key}:
$ git config user.name
Scott Chacon
2.5 獲取幫助(Getting help)
如果當(dāng)你在使用Git時(shí)需要幫助,有三種方法可以獲得任何git命令的手冊(cè)頁(manpage)幫助信息:
$ git help verb>
$ git verb> --help
$ man git-verb>
例如,你可以運(yùn)行如下命令獲取對(duì)config命令的手冊(cè)頁幫助:
$ git help config
這些命令非常友好,因?yàn)槟憧梢栽谌魏蔚胤酱嫒∷麄?,即使非在線狀態(tài)。如果手冊(cè)頁和本書仍然不足而你需要個(gè)人的幫助,你可以試著使用Freenode IRCServer上的#git或#github 頻道(irc.freenode.net)。這些頻道會(huì)定期由數(shù)百個(gè)對(duì)Git非常熟悉的專業(yè)人士所維護(hù),他們會(huì)非常樂意幫助你。
2.6 總結(jié)(Summary)
你應(yīng)該對(duì)Git是什么以及Git與你可能使用的其它CVCS之間的不同有了一個(gè)基本的了解。你也應(yīng)當(dāng)在你的系統(tǒng)中有了一個(gè)具有你個(gè)人標(biāo)識(shí)的可以工作的Git版本。是時(shí)候來學(xué)習(xí)一些Git的基本知識(shí)了。
git 實(shí)際使用記錄
1、git 提交代碼錯(cuò)誤實(shí)例分析
$ git push origin master
To git@192.168.1.3:k6.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@192.168.1.3:k6.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again. See the 'Note about
fast-forwards' section of 'git push --help' for details.
cbk@YCS:~/work/k6_130708/k6$ git fecth
git: 'fecth' is not a git command. See 'git --help'.
git push 錯(cuò)誤,因?yàn)闆]有先pull最新的代碼,需要以下操作:
$ git fetch origin
$ git merge origin/master
$ git push origin master
如果安裝git后沒有設(shè)置你的用戶名稱和e-mail地址,還需要先執(zhí)行:
$ git config --global user.name "cbk"
$ git config --global user.email a target=_blank target="_blank" href="mailto:cbk@ylf.com">cbk@ylf.com/a>
這是非常重要的,因?yàn)槊看蜧it提交都會(huì)使用該信息。它被永遠(yuǎn)的嵌入到了你的提交中:
重申一遍,你只需要做一次這個(gè)設(shè)置。如果你傳遞了 --global 選項(xiàng),因?yàn)镚it將總是會(huì)使用該信息來處理你在系統(tǒng)中所做的一切操作。如果你希望在一個(gè)特定的項(xiàng)目中使用不同的名稱或e-mail地址,你可以在該項(xiàng)目中運(yùn)行該命令而不要--global選項(xiàng)。
具體到此問題,如果沒有設(shè)置你的用戶名稱和e-mail地址,則一直正確無法push代碼。
2、Git 跟蹤一個(gè)文件的提交歷史記錄
在跟蹤Android代碼是,有時(shí)候發(fā)現(xiàn)某個(gè)關(guān)鍵文件被改動(dòng)了,需要跟蹤查看對(duì)這個(gè)關(guān)鍵文件的所有commit的記錄,以便理解其中的修改原因和過程:
git log -p “file name”
顯示這個(gè)文件的每一行的最后提交commit,方便定位commit:
git blame “file name"
顯示log詳細(xì)修改記錄:
git show [log_id_num],例如:
git show 75704c8543b033619a80439ddb0fd69cc7cb172c
3、git初始化之git config
1). 下面的命令將修改/home/[username]/.gitconfig文件,也就是說下面的配置只對(duì)每一個(gè)ssh的用戶可見,所以每個(gè)人都需要做。
提交代碼的log里面會(huì)顯示提交者的信息
git config --global user.name [username]
git config --global user.email [email]
在git命令中開啟顏色顯示
git config --global color.ui true
2). 下面的命令將修改/etc/gitconfig文件,這是全局配置,所以admin來做一次就可以了。
配置一些git的常用命令alias
sudo git config --system alias.st status #git st
sudo git config --system alias.ci commit #git commit
sudo git config --system alias.co checkout #git co
sudo git config --system alias.br branch #git branch
3). 也可以進(jìn)入工作根目錄,運(yùn)行g(shù)it config -e,這樣就只會(huì)修改工作區(qū)的.git/config文件,但是暫時(shí)還用不著.
git config文件的override順序是3)>1)>2).
4.版本回退
git reset --hard commit_id
git checkout commit_id
git clean –df commit_id