Git命令詳解-我的使用

本文暫時不會涉及到團隊如何使用Git的內容,而是從我的的角度探討如何用好Git。git

約定

綠色的5位字符表示提交的ID,分別指向父節點。分支用橘色顯示,分別指向特定的提交。當前分支由附在其上的標識。 這張圖片裏顯示最後5次提交,是最新提交。分支指向這次提交,另外一個分支指向祖父提交節點。緩存

git cat-file

git cat-file -t,查看Git對象的類型,主要的git對象包括tree,commit,parent,和blob等。服務器

git cat-file -p,查看Git對象的內容url

git log

git log主要用來顯示分支中提交更改的記錄。當執行git commit以存儲一個快照的時候,文件詳單、提交消息和提交者的信息、這次提交所基於的快照都會被保存。spa

git log --oneline,能夠顯示更加短小的提交ID.指針

git log --graph,顯示什麼時候出現了分支和合並等信息.orm

git log --pretty=raw,顯示提交對象的parent屬性.對象

git config

git config -e遞歸

git config -e --global索引

git config -e --system

Git的三個配置文件分別是版本庫級別的配置文件(/.git/config)、全局配置文件(用戶主目錄下)和系統級配置文件(/etc目錄下)。這個命令的做用是打開相應的配置文件,而且進行編輯。其中版本庫級別的配置文件的優先級最高,全局配置文件次之,系統級別配置文件最低。Git配置文件採用的是INI文件格式。

git config <section>.<key>,讀取和更改INI配置文件的內容。

git config <section>.<key> <value>,修改INI配置文件中某個配置的鍵值

在全局空間中添加新的用戶

git config --global user.name "harvey liu"

git config --global user.email harvey_liu@163.com

設置git命令的別名

git config --global alias.ci commit

git config --global alias.co checkout

刪除git全局配置文件中的用戶名

git config --unset --global user.name

git config --unset --global user.email

git diff

git diff,顯示工做區和暫存區的差別

git diff HEAD,顯示工做區和HEAD之間的差別

git diff --cached,顯示暫存區和HEAD之間的差別

git diff id1 id2,顯示兩次提交之間的差別

git status

git status,查看你的代碼在緩存與當前工做目錄的狀態

git status -s,將結果以簡短的形式輸出

git add

git add,在提交你修改的文件以前,你須要把它們添加到暫存區。若是該文件是新建立的,你能夠執行將該文件添加到暫存區

git add . ,Git會遞歸地將你執行命令時所在的目錄中的全部文件添加上去,因此若是你將當前的工做目錄做爲參數,它就會追蹤那兒的全部文件

git add -u,使用-u參數調用了git add命令,會將本地有改動(包括刪除和修改)的已經追蹤的文件標記到暫存區中。

git add -A,使用-A參數會將添加全部改動的已跟蹤文件和未跟蹤文件。

git add -i,交互式的方式進行添加。

git commit

git commit --amend,修補式提交。

git commit --a,對本地全部變動的文件執行提交操做,包括對本地修改的文件和刪除的文件,可是不包括未被版本庫跟蹤的文件。可是這個命令最好不要使用,這樣會丟掉Git暫存區帶給用戶的最大好處:對提交內容進行控制的能力

git reset

把當前分支指向另外一個位置,而且有選擇的變更工做目錄和索引

git reset --hard <commit>,替換引用的指向,替換暫存區,替換工做區

git reset --soft <commit>,只更改引用的指向,不改變暫存區和工做區

git reset,用HEAD指向的目錄樹重置暫存區

git reset -- filename,將文件filename的改動撤出暫存區,暫存區其餘文件不變

git branch

git branch,顯示當前所在的分支

git branch <branchname>,建立新的分支branchname

git branch -d <branchname> ,刪除名稱爲branchname的分支

git checkout

git checkout,檢出命令。

git checkout branchname,會改變HEAD頭指針,主要用於切換分支

git checkout -b branchname,用於建立一個新的分支,而且切換到建立的新的分支上

git checkout --filename,用暫存區中的filename文件來覆蓋工做區中的filename文件

git checkout <commit> --filename,用指定提交中的文件覆蓋暫存區和工做區中對應的文件

git checkout -- .或者git checkout .,用暫存區的全部文件直接覆蓋本地文件,取消全部的本地的修改,是一條危險的操做

git rm

rm命令刪除的文件只是在本地進行了刪除,還沒有添加到暫存區,也就是說,直接在工做區刪除,對暫存區和版本庫沒有任何影響。

git rm命令會將刪除動做加入暫存區,這是執行提交動做,就從真正意義上執行了文件刪除。

git mv

git mv,移動文件,git中以git rm和git add兩條命令取而代之。

git archive

git archive,對任意提交對應的目錄樹創建歸檔。

git archive -o latest.zip HEAD,基於最新提交創建歸檔文件latest.zip

git archive -o partial.tar HEAD src doc,只將目錄src和doc創建到歸檔文件partial.tar中

git archive --format=tar --prefix=1.0/ v1.0 | gzip > foo-1.0.tar.gz,基於里程碑v1.0創建歸檔,而且爲歸檔中的文件添加目錄前綴1.0

git clone

git clone <repository> <directory>,將repository指向的版本庫建立一個克隆到directory目錄中。目錄directory至關於克隆版本庫的工做區,文件都會檢出,版本庫位於工做區下得.git目錄中。

git clone --bare <repository> <directory.git>

git clone --mirror <repository> <directory.git>

上面的兩種克隆版本都不包含工做區,直接就是版本庫的內容,這樣的版本庫稱爲裸版本庫。

git push

git push <remote> [branch],就會將你的 [branch] 分支推送成爲 [alias] 遠端上的 [branch] 分支,要推送的遠程版本號的URL地址由remote.<remote>.pushurl給出,若是沒有配置,則使用remote.<remote>.url配置的URL地址。

git pull

git pull,從遠端的服務器上下載數據,從而實現同步更新。要獲取的遠程版本庫的URL地址由remote.<remote>.url提供。

相關文章
相關標籤/搜索