git版本控制相關命令

2021-08-20 21:57:34 字數 1913 閱讀 3803

git採用快照的方式記錄修改。每一次的版本都只記錄上乙個版本的版本號,這樣保證了版本的先前追溯的穩定性,同時為分支和分布儲存提供了巧妙的設計基礎。

git的分支其實也是版本控制。git的分支並不是重新寫乙份檔案,而是完全使用先前的版本記錄,使用分支的指標指向。這裡會發現版本的控制其實已經完全實現了分支,分支只是給了你乙個儲存多條路線的機會,哪怕沒有分支控制,也完全可以使用reflog檢視全版本,reset控制版本跳躍、更新已經生成新的分支版本,最後使用add和commit重新合併。版本控制的命令完全是為了操作方便,所謂的分支控制,其實就是版本控制。只是分支控制提供了方便的指標,顯式的用於操作,事實上在push時,非主線路的版本是不推送的。這其實完全是底層語言指標設計思想的具體使用。不得不說linus對於c語言的使用真厲害。

git的另乙個強大的地方,分布式也需要版本控制的基礎。分布式的設計其實也就是對於版本控制的更高一層的使用,畢竟你push的每一次更新都是新的版本,提交時比較的也就是版本的更新。不過分布式推送的時候是不提交那些隱式版本的,或者說是只推送一條現在所使用的主線路,除非你提交其他分支,要不連顯示的分支版本也不提交。

版本切換命令,有三種操作方式,使用版本號、head加^以及head~加數字的方式。head本事表示當前版本,加數字的方式,數字就代表加了幾個^,即該版本之前的第幾個版本。後面兩種方式也只能回退,而第一種可以根據版本號隨意切換。後面介紹中,版本號的位置可以用三種方式實現,當然後兩種仍然不能往前走,後面就不再重複寫了。

在這裡要區分好三個區的不同,他們就像三個鍊錶分別對應不同的一套**。三個區域的指標指向**,對應的區域就表示哪乙個版本的資訊。當然所能表示的資訊必須都是存在commit庫中的。

git reset --hard 版本名

將版本徹底回退到某一版本,版本名只需要輸入前幾位識別出不同即可。該命令會將working tree、index和commit三個區間的內容全部回退。

git reset --mixed 版本號

git reset --soft 版本名

git reset file

表示只對某個檔案設定,其實該命令的file可以載入之前所有版本的後面。簽名的命令沒有file表示預設當前的所有檔案,而加上file表示只對該file檔案操作。

git log

檢視之前的版本,不包括現在版本之後的版本。

git log --pretty=oneline

以乙個版本一行的方式顯示。

git log --oneline

同樣以乙個版本一行的方式顯示,但是版本號不全顯示,只顯示6位,6位基本就足夠標識了。

git reflog

乙個版本一行的方式顯示,同git log --oneline,但是多了head@。reflog與log不同的是reflog命令不僅僅顯示之前的版本號,只要本地資料庫有的版本號,不論現在處於那個版本都會顯示出來。

git log --graph --all

圖示版本路線。

該命令用於比較兩個版本的區別。比較時,如果不寫,預設commit1為工作區,commit2預設為commit1的上一級(working tree->index->commit,只考慮先版本的,如果commit1為之前版本,commit2為工作區版本)。--cached代表index快取區。commit倉庫的版本號總是用head標識方式來代替。加file表示該檔案,不加預設全部。

有關git的其他內容可以通過這裡訪問

Git版本控制命令

git config global user.name dage git config global user.email cici gmail.com 可以通過去掉後面的使用者名稱和郵箱檢視是否設定成功 在當前工程的目錄下 git init當前目錄下出現.git 資料夾,如果想刪除本地倉庫可以直接...

Git 版本控制命令

本文只是乙個學習的記錄,後期會不定期的更新 git config global user.name chris zhang git config global user.email chriszhang email.com git inittouch filenamegit status 及 git...

git 版本常用控制命令

1.git checkout b iss53 等價與兩條命令 git branch iss53 先建立分支 git checkout iss53 2.git commit a m 修改的說明 等價於兩條命令 git add git commit m 修改的說明 3.git branch 顯示有哪些分...