天天看點

Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

這兩天在學習git版本控制工具,在這裡記錄一下。git的安裝就不提了,可以去官網下載下傳:https://git-scm.com/。

一、git工作原理

Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令
  • git在本地分為三個區本地庫、暫存區和工作區。
  • 工作區的代碼要送出首先需要使用git add指令添加到暫存區,然後使用git commit指令送出到本地庫。
  • 暫存區的作用主要是臨時存儲,用于版本控制,是以送出前添加到暫存區非常重要。
  • 可以直接git commit送出,但是送出後版本無法恢複。
Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

本地倉庫與遠端倉庫的關系如上。

  • 本地庫2想要擷取遠端倉庫的代碼,可以使用git clone指令覆寫到本地。
  • 本地庫2修改完代碼後想要同步到遠端倉庫,使用git push指令,需要加入團隊。
  • 本地庫1使用git pull指令拉取遠端倉庫代碼合并到本地倉庫,修改完成後git push推送到遠端倉庫合并。

了解到這些之後就可以試着練練手了。

二、Git的相關指令

首先切換到項目檔案夾下,右鍵打開git指令視窗。

1、設定簽名

在使用git之前需要先設定一下簽名,簽名其實就是為了區分是誰操作的一個辨別。包括使用者和郵箱。

簽名分為兩個級别:項目級别和系統使用者級别。

  • 項目級别:隻對目前項目生效
  • 系統使用者級别:相當于全局,隻要不切換系統使用者一直生效。
  • 優先級:項目級别>系統使用者級别
  • 二者必須設定其一,否則git無法區分是誰進行的操作,也就無法進行版本控制。
# 項目級别
git config user.name zhangsan
git config user.email [email protected]
# 系統使用者級别
git config --global user.name zhangsan
git config --global user.email [email protected]
           

其中項目級别配置完後儲存在項目下 .git/config檔案中。

Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

系統使用者級别配置儲存在使用者目錄下的.gitconfig檔案中。

Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

cat指令用于列印檔案内容

~代表使用者根目錄,也就是通常說的c:/user/administrator/

簽名配置好以後就可以開始進行git的相關操作了。

2、初始化本地倉庫

git init
           

指令執行後會生成.git檔案夾,這裡面包含一系列本地倉庫相關的檔案,不要删除或修改。

Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

3、檢視狀态指令

git status
           
Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

第二行表示工作區,目前沒有檔案可以送出;第三行表示暫存區沒有檔案可送出。

4、工作區添加到暫存區

建立檔案随便寫點東西,然後使用git status指令檢視狀态。

echo -e 'gaahaha\n gahhopkmm\n' >> test.txt
git status
           
Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

發現工作區有一個标紅的檔案可送出,提示我們使用git add 指令。

echo指令是列印字元,這裡的意思是追加 gaahaha\n gahhopkmm\n 到test.txt檔案中。>>表追加,>表覆寫,參數-e表示解釋轉義字元。

使用git add指令添加,然後使用git status檢視狀态。

git add test.txt
git status
           
Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

這時候發現工作區已經沒有檔案可以送出了,暫存區多了一個綠色的檔案是我們剛送出上來的。而且提示我們如果想要恢複之前的狀态可以使用git rm --cached指令。

5、暫存區送出到本地倉庫

使用git add添加到暫存區後緊接着就可以使用git commit指令送出到本地倉庫了。

git commit test.txt
           

上面的指令執行後會出現這樣一個界面,這是vim編輯器,送出指令執行後會預設打開vim編輯器,這是在安裝git的時候選擇的,你可能沒注意,但确實有這樣一步。

如果你不想打開這個編輯器這樣來使用:

Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

這裡要求送出的時候添加一些備注,如果每一次送出都沒有備注的話,可以想象多難找,是以git要求必須添加備注,否則添加失敗,如圖,送出被終止:

Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

重新執行git commit指令,按下 i 進入編輯模式,編輯完成後按Esc退出到指令模式,然後按:編輯指令,輸入wq儲存并退出,Enter鍵出現下圖即送出成功。

Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

可以對應來看一下,大概就是說,根送出也就是第一個版本,版本号77ee20b開頭,備注this is my first commit,改變1個檔案,3行内容。第一行的警告也是安裝的時候有一個選項,送出的時候會将換行結尾符從windows的LF格式轉換成CRLF格式,但本地不會變,不會影響自己的操作。

執行git status指令檢視狀态,沒有需要送出的内容。

Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

這就是一次完整的從工作區送出到本地庫的過程。

6、檢視日志指令

每一次送出過後都會生成一個曆史版本,對應着有相應的日志進行記錄。檢視日志使用這個指令:

git log
           
Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

為了友善示範我又修改送出了一次,這個指令檢視log會生成很詳細的資訊如上圖,其中帶有(HEAD -> master)的就是目前的版本,commit後的一長串就是版本号,如果需要回退到某個版本時會用到。

當版本過多時,這樣的顯示就顯得太多了,而且一頁顯示不下幾個版本的資訊,這個時候可以加上參數–pretty=oneline。這種方式隻顯示曆史版本。

git log --pretty=oneline
           
Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

這個指令隻會顯示版本号和送出資訊,有時候查找起來會更加的友善。什麼?指令太長了,那就換種寫法。

git log --oneline
           
Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

這樣的寫法隻會顯示版本号的前7位和備注資訊,事實上,版本控制也隻需要前七位就可以了。這種方式也隻顯示曆史版本。

還有一種寫法用于顯示版本距離。

git reflog
           
Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

這種方式和–oneline的方式相比就對了一個版本距離的問題,其中HEAD@{}就是版本距離,就是指距離目前版本的版本個數。這種方式會顯示所有的版本,包括目前版本之前的版本。

7、版本回退

當我們需要回退版本的時候可以使用git reset指令。

# 通過版本号回退,可以跳到任意版本
git reset --hard 版本号
# 使用HEAD指針回退,隻能退到之前的版本,曆史版本,一個^代表一個版本
git reset --hard HEAD^...
# 回退N個版本
git reset --hard HEAD~[N]
           

除了–hard參數,還有–soft和–mixed參數。

–soft:僅在本地庫移動指針,暫存區被凸顯出來。

–mixed:移動本地庫和暫存區的指針,工作區被凸顯出來。

–hard:三個區保持同步移動。

8、比較檔案指令

# 比較工作區和暫存區的檔案
git diff [檔案名]
# 比較某個曆史版本和本地庫的檔案
git diff [版本号] [檔案名]
# 不帶檔案名比較所有檔案
git diff
git diff [版本号]
           

9、分支管理

為什麼要分支?

同時并行推進多個功能開發,提高開發效率。

試錯,如果開發失敗,不會退其他分支造成影響,删除分支重新開始即可。

分支指令

# 建立分支
git branch [分支名]
# 檢視分支
git branch -v
# 切換分支
git checkout [分支名]
# 合并分支,将某分支合并到目前分支
git merge [分支名]
           

當執行merge指令時可能會遇到沖突,例如合并的兩個分支修改了同一檔案的同一行,git無法自動取舍,會将沖突的區域都加入到檔案中做上标記并提示,如下圖:

Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

打開檔案如下:

Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

git幫我們标記出了沖突的位置,我們需要人為的進行取舍。修改完檔案後執行git status檢視狀态。

Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

提示我們有沖突需要解決,使用git add指令,那我們就執行git add指令,再次執行git status檢視狀态。

Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

提示沖突已經被修複啦,但仍然在合并中,提示我們用git commit指令結束合并。這裡要注意,不能添加檔案名,否則會報錯。

Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

執行指令git commit 後沖突解決。

Git學習筆記(一)本地相關指令一、git工作原理二、Git的相關指令

以上就是我今天所學的所有内容啦,後面會繼續學習跟github相關的操作。推薦大家去B站聽尚矽谷的課程,講的每一門技術都特别細緻,讓人印象特别深刻。大家加油!!!

繼續閱讀