Git命令詳解(一) 個人使用

2021-06-22 18:12:12 字數 3491 閱讀 3207

from:

本文暫時不會涉及到團隊如何使用git的內容,而是從個人的角度**如何用好git。

綠色的5位字元表示提交的id,分別指向父節點。分支用橘色顯示,分別指向特定的提交。當前分支由附在其上的標識。 這張裡顯示最後5次提交,是最新提交。分支指向此次提交,另乙個分支指向祖父提交節點。

git cat-file -t,檢視git物件的型別,主要的git物件包括tree,commit,parent,和blob等。

git cat-file -p,檢視git物件的內容

git log主要用來顯示分支中提交更改的記錄。當執行git commit以儲存乙個快照的時候,檔案詳單、提交訊息和提交者的資訊、此次提交所基於的快照都會被儲存。

git log --oneline,可以顯示更加短小的提交id.

git log --graph,顯示何時出現了分支和合併等資訊.

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

git config -e

git config -e --global

git config -e --system

git的三個配置檔案分別是版本庫級別的配置檔案(/.git/config)、全域性配置檔案(使用者主目錄下)和系統級配置檔案(/etc目錄下)。這個命令的作用是開啟相應的配置檔案,並且進行編輯。其中版本庫級別的配置檔案的優先順序最高,全域性配置檔案次之,系統級別配置檔案最低。git配置檔案採用的是ini檔案格式。

git config .,讀取和更改ini配置檔案的內容。

git config .,修改ini配置檔案中某個配置的鍵值

在全域性空間中新增新的使用者

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

git config --global user.email [email protected]

設定git命令的別名

git config --global alias.ci commit

git config --global alias.co checkout

刪除git全域性配置檔案中的使用者名稱

git diff,顯示工作區和暫存區的差異

git diff head,顯示工作區和head之間的差異

git diff --cached,顯示暫存區和head之間的差異

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

git status,檢視你的**在快取與當前工作目錄的狀態

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

git add,在提交你修改的檔案之前,你需要把它們新增到暫存區。如果該檔案是新建立的,你可以執行將該檔案新增到暫存區

git add . ,git會遞迴地將你執行命令時所在的目錄中的所有檔案新增上去,所以如果你將當前的工作目錄作為引數,它就會追蹤那兒的所有檔案

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

git add -a,使用-a引數會將新增所有改動的已跟蹤檔案和未跟蹤檔案。

git add -i,互動式的方式進行新增。

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

git commit --a,對本地所有變更的檔案執行提交操作,包括對本地修改的檔案和刪除的檔案,但是不包括未被版本庫跟蹤的檔案。但是這個命令最好不要使用,這樣會丟掉git暫存區帶給使用者的最大好處:對提交內容進行控制的能力

把當前分支指向另乙個位置,並且有選擇的變動工作目錄和索引

git reset --hard ,替換引用的指向,替換暫存區,替換工作區

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

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

git reset -- filename,將檔案filename的改動撤出暫存區,暫存區其他檔案不變

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

git branch

,建立新的分支branchname

git branch -d

,刪除名稱為branchname的分支

git checkout,檢出命令。

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

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

git checkout --filename,用暫存區中的filename檔案來覆蓋工作區中的filename檔案

git checkout --filename,用指定提交中的檔案覆蓋暫存區和工作區中對應的檔案

git checkout -- .或者git checkout .,用暫存區的所有檔案直接覆蓋本地檔案,取消所有的本地的修改,是一條危險的操作

rm命令刪除的檔案只是在本地進行了刪除,尚未新增到暫存區,也就是說,直接在工作區刪除,對暫存區和版本庫沒有任何影響。

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

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

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 ,將repository指向的版本庫建立乙個轉殖到directory目錄中。目錄directory相當於轉殖版本庫的工作區,檔案都會檢出,版本庫位於工作區下得.git目錄中。

git clone --bare

git clone --mirror 

上面的兩種轉殖版本都不包含工作區,直接就是版本庫的內容,這樣的版本庫稱為裸版本庫。

git push [branch],就會將你的 [branch] 分支推送成為 [alias] 遠端上的 [branch] 分支,要推送的遠端版本號的url位址由remote..pushurl給出,如果沒有配置,則使用remote..url配置的url位址。

乙個人久了

乙個人久了,會懶得戀愛 乙個人久了,朋友會越重要 乙個人久了,會越來越喜歡聽歌 乙個人久了,會常常忘記帶 乙個人久了,對愛情會越來越挑剔 乙個人久了,會更加勤奮 乙個人久了,除了寂寞點外還是蠻開心的 乙個人久了,會慢慢變得成熟起來 乙個人久了,會比以前更重視更愛父母,更重視親情 乙個人久了,對所有的...

很愛乙個人

外邊的雨依然下著,沒有停的意思 下了兩天兩夜,感覺好悶 這幾天看著男友,很心疼,每天要洗碗,洗衣服 我很聽話不去惹寶貝生氣,醫生不讓我用冷水,我也很害怕 害怕身體因此而跨掉 我們都還年輕 以後的路還很長 這個代價會很大 我也希望這些日子能過的快些,自己的身體能恢復的快些,為此事我們花了一千元,想來不...

乙個人而已

黑夜如手冽風如喉 窗外的寒雪映白了竹樓 誰在夢中為我煮沸一杯清酒 茺涼的夜風霜雨雪 是誰的嫵媚風情把我淹沒 是誰的美麗 放蕩了我的心魔 是誰在無情地將我一刀一刀地割 直到割得滿地燃燒的鮮血開出美麗的紅蓮花朵 黑暗的夜冷風雨雪 是誰在靜悄悄地欣賞著那無盡的孤獨流淌在我的黑夜 身似激情背後的那片虛無 心...