Git常用的簡單命令

phplife發表於2015-06-03

Vim+Gig是在伺服器端開發再合適不過的神器!這裡只是對自己平常工作中常常使用到的git命令做一個小小的總結,方便程式設計師開發和版本控制!

git的配置檔案
1、git有三個級別的配置檔案,分別是版本庫級別的配置檔案、全域性配置檔案(使用者家目錄下)、系統配置檔案(安裝git的時候所在的目錄,一般情況下是在/etc/)。它們的有限級別如下,.git 目錄下的config檔案配置會覆蓋使用者家目錄下的配置檔案,而使用者家目錄的配置檔案會覆蓋系統的git配置檔案
2、git config -e 對版本庫中的.git/config 檔案進行編輯
git config -e –global 對主目錄下的.gitconfig檔案進行編輯
git config -e –system 對系統級別的配置檔案進行編輯
3、git config <section> . <key> 用來讀取某個配置節下的對應鍵
git config <section> . <key> 用來設定某個配置接下的對應鍵

git –version
檢視當前git的版本

初始化程式碼倉庫(此時在當前目錄下,就會多一個 .git 的目錄,就是程式碼倉庫)
git init

git config –global user.name `zero`
git config –global user.email `maweibinguo@163.com` (自報家門)
git config –global color.ur true(在命令列中開啟顏色顯示)
對git進行配置

git rev-parse –git-dir
顯示版本庫.git目錄所在的位置

git status -s
功能:用來比較,當前的工作目錄和快取區的狀態
??:該檔案還沒有被git進行追蹤
A:當前工作目錄同快取檔案相比,新增加的檔案
M:當前目錄同緩衝區相比,已經進行了改變(Modify)
D: 當前目錄同緩衝區相比,刪除的檔案

注意:git status 是以緩衝區中的內容為標準的,所有的AMD都是以緩衝區的內容為準,經過同緩衝區的對比,發現當前工作區進行了AMD等操作

git diff
功能:如果沒有其他引數,git diff 會顯示自從你上次提交快照之後尚未快取的所有更改
注意:對比的參照點仍然是緩衝區中的內容,將當期那工作目錄中的檔案同緩衝區做對比

git diff –cached
功能:將緩衝區的內容同快照中的內容進行對比

git diff HEAD
功能:將當前工作目錄中的檔案,同快照中的內容進行對比,HEAD(當前工作分支)

git commit -m `對本次提交的快照的說明`
功能:將緩衝區中的內容添形成一次快照(也就是打一個版本)

git commit -am `對本次提交的說明`
功能:同git commit -m 的功能類似,但是,由於多了一個a引數。這樣就有一個隱含的操作,將已經追蹤的檔案先進行自動提交(注意:是已經追蹤到的檔案)!

git log :
功能:顯示從最近到最遠的提交日誌
個人體會是,我們最想要的就是commmitid和對本次提交的說明

git reset –hard commitid
功能:回到指定的某個版本,注意,是連通當前的工作區一起回去,很可怕的一個命令。如果你並沒有對當前的工作目錄進行提交,而且還執行了這個操作,那麼就杯具了,你上次提交後所有的更改內容就全部丟失而來,本人在這方面就犯了很大的錯誤!想想都是血淚啊!

git reflog
功能:用來記錄你的每一次命令,這樣我們就可以看到所有的commitid了(而git log只能夠用來檢視當前版本的commitid以及以前提交版本的commitid)

git checkout — file
功能:將緩衝區或者快照中的指定檔案恢復到當前的工作目錄
注意:–是必須要寫的,如果不寫的話,就成為了分支的切換。
同時,我們應該明白,恢復的先後順序。執行完改命令後,如果緩衝區中有該檔案的話,那麼工作目錄就會恢復到緩衝區的樣子!如果緩衝區沒有檔案的話,那麼就會恢復到最新提交的版本上面!

git reset HEAD file
功能:將緩衝區中的指定檔案,回退到最新的一次commit版本。
這個命令還是很有用的,如果我們誤操作了,並且進行了add,那麼此時再用 git checkout –file 恢復工作區中的內容的話,就沒有任何效果了!但是執行git reset HEAD file這個命令,就可以將最新一次的commit中的file檔案拉回到緩衝區中,然後在通過git checkout — file命令,恢復到工作區中!

git branch
功能:展現當前的所有分支,前面帶有 “*” 是所在分支

git branch 分支名
功能:建立一個新的分支

git checkout -b 分支名
功能:建立新分支,並切換到改分支上

git branch -d 分支名
功能:刪除指定的分支(不可以刪除當前所在分支)

git checkout 分支名
功能:用於在不同的分支之間進行切換
注意:由於版本的不同,在操作上可能有所不同!在某些版本上必須先進行git add , commit 之後,才能進行分支的切換!(1.8.3之前的貌似都需要提交才行),而有的分支則不需要進行此操作!

git merge 分支名
功能:將指定的分支合併到當前的分支
關於分支的合併我想說一下,自己的理解,個人認為所謂合併,其實是對所有修改的合併!這裡舉個例子說明會更好一些:
A作家寫初步完成了一篇長篇小說的初稿,但是呢仍然需要對這篇長篇小說進行修修改改!處於對質量的嚴格要求!此時A作家找到了B作家,希望B作家提出寶貴的意見,讓他對這篇小說也進行修改!等修改的差不多了,A作家,就讓B作家把他的修改內容發給A作家,A作家再將B作家的修改新增到自己既有的修改上面!(–這應該就是合併)
如果A作家的修改的內容,B作家也進行了修改,那麼就有A作家去決定改要誰的修改!(–這就是解決衝突)

相關文章