git config配置文件
一.Git已經在你的系統中了,你會做一些事情來客戶化你的Git環境。你只需要做這些設置一次;即使你升級了,他們也會綁定到你的環境中。你也可以在任何時刻通過運行命令來重新更改這些設置。
Git有一個工具被稱為git config,它允許你獲得和設置配置變量;這些變量可以控制Git的外觀和操作的各個方面。這些變量可以被存儲在三個不同的位置:
1./etc/gitconfig 文件:包含了適用於系統所有用戶和所有庫的值。如果你傳遞參數選項’--system’ 給 git config,它將明確的讀和寫這個文件。
2.~/.gitconfig 文件 :具體到你的用戶。你可以通過傳遞--global 選項使Git 讀或寫這個特定的文件。
3.位於git目錄的config文件 (也就是 .git/config) :無論你當前在用的庫是什麼,特定指向該單一的庫。每個級別重寫前一個級別的值。因此,在.git/config中的值覆蓋了在/etc/gitconfig中的同一個值。
在Windows系統中,Git在$HOME目錄中查找.gitconfig文件(對大多數人來說,位於C:\Documents and Settings\$USER下)。它也會查找/etc/gitconfig,盡管它是相對於Msys 根目錄的。這可能是你在Windows中運行安裝程序時決定安裝Git的任何地方。
二.你的標識(Your Identity)
2.1 當你安裝Git後首先要做的事情是設置你的用戶名稱和e-mail地址。這是非常重要的,因為每次Git提交都會使用該信息。它被永遠的嵌入到了你的提交中:
代碼如下:
$ git config --global user.name "John Doe"
$ git config --global user.email [email protected]
重申一遍,你只需要做一次這個設置。如果你傳遞了 --global 選項,因為Git將總是會使用該信息來處理你在系統中所做的一切操作。如果你希望在一個特定的項目中使用不同的名稱或e-mail地址,你可以在該項目中運行該命令而不要--global選項。
2.2 你的編輯器(Your Editor)
現在,你的標識已經設置,你可以配置你的缺省文本編輯器,Git在需要你輸入一些消息時會使用該文本編輯器。缺省情況下,Git使用你的系統的缺省編輯器,這通常可能是vi 或者 vim。如果你想使用一個不同的文本編輯器,例如Emacs,你可以做如下操作:
代碼如下:
$ git config --global core.editor emacs
2.3 你的比較工具(Your Diff Tool)
另外一個你可能需要配置的有用的選項是缺省的比較工具它用來解決合並時的沖突。例如,你想使用vimdiff:
代碼如下:
$ git config --global merge.tool vimdiff
Git可以接受kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, 和 opendiff作為有效的合並工具。你也可以設置一個客戶化的工具;查看第7章獲得更多關於此的信息。
2.4 檢查你的設置(Checking Your Settings)
如果你想檢查你的設置,你可以使用 git config --list 命令來列出Git可以在該處找到的所有的設置:
代碼如下:
$ git config --list
user.name=Scott Chacon
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...
你可能會看到一個關鍵字出現多次,這是因為Git從不同的文件中(例如:/etc/gitconfig以及~/.gitconfig)讀取相同的關鍵字。 在這種情況下,對每個唯一的關鍵字,Git使用最後的那個值。
你也可以查看Git認為的一個特定的關鍵字目前的值,使用如下命令 git config {key}:
代碼如下:
$ git config user.name
Scott Chacon
2.5 獲取幫助(Getting help)
如果當你在使用Git時需要幫助,有三種方法可以獲得任何git命令的手冊頁(manpage)幫助信息:
代碼如下:
$ git help
$ git
$ man git-
例如,你可以運行如下命令獲取對config命令的手冊頁幫助:
代碼如下:
$ git help config
這些命令非常友好,因為你可以在任何地方存取他們,即使非在線狀態。如果手冊頁和本書仍然不足而你需要個人的幫助,你可以試著使用Freenode IRCServer上的#git或#github 頻道(irc.freenode.net)。這些頻道會定期由數百個對Git非常熟悉的專業人士所維護,他們會非常樂意幫助你。
2.6 總結(Summary)
你應該對Git是什麼以及Git與你可能使用的其它CVCS之間的不同有了一個基本的了解。你也應當在你的系統中有了一個具有你個人標識的可以工作的Git版本。是時候來學習一些Git的基本知識了。
git 實際使用記錄
1、git 提交代碼錯誤實例分析
代碼如下:
$ git push origin master
代碼如下:
To [email protected]:k6.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]: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 錯誤,因為沒有先pull最新的代碼,需要以下操作:
代碼如下:
$ git fetch origin
$ git merge origin/master
$ git push origin master
如果安裝git後沒有設置你的用戶名稱和e-mail地址,還需要先執行:
代碼如下:
$ git config --global user.name "cbk"
$ git config --global user.email [email protected]
這是非常重要的,因為每次Git提交都會使用該信息。它被永遠的嵌入到了你的提交中:
重申一遍,你只需要做一次這個設置。如果你傳遞了 --global 選項,因為Git將總是會使用該信息來處理你在系統中所做的一切操作。如果你希望在一個特定的項目中使用不同的名稱或e-mail地址,你可以在該項目中運行該命令而不要--global選項。
具體到此問題,如果沒有設置你的用戶名稱和e-mail地址,則一直正確無法push代碼。
2、Git 跟蹤一個文件的提交歷史記錄
在跟蹤Android代碼是,有時候發現某個關鍵文件被改動了,需要跟蹤查看對這個關鍵文件的所有commit的記錄,以便理解其中的修改原因和過程:
代碼如下:
git log -p “file name”
顯示這個文件的每一行的最後提交commit,方便定位commit:
代碼如下:
git blame “file name"
顯示log詳細修改記錄:
git show [log_id_num],例如:
代碼如下:
git show 75704c8543b033619a80439ddb0fd69cc7cb172c
3、git初始化之git config
1). 下面的命令將修改/home/[username]/.gitconfig文件,也就是說下面的配置只對每一個ssh的用戶可見,所以每個人都需要做。
提交代碼的log裡面會顯示提交者的信息
代碼如下:
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). 也可以進入工作根目錄,運行git config -e,這樣就只會修改工作區的.git/config文件,但是暫時還用不著.
git config文件的override順序是3)>1)>2).
4.版本回退
代碼如下:
git reset --hard commit_id
代碼如下:
git checkout commit_id
代碼如下:
git clean –df commit_id