【Git】命令列操作

Nemo&發表於2021-01-14

Git 命令列操作

1 本地庫初始化

git init:初始化本地倉庫

效果
【Git】命令列操作

注意:.git目錄中存放的是本地庫相關的子目錄和檔案,不要刪除,也不要胡亂修改。

2 設定簽名

形式:

使用者名稱:tom
Email地址:goodMorning@atguigu.com

作用:區分不同開發人員的身份

辨析:這裡設定的簽名和登入遠端庫(程式碼託管中心)的賬號、密碼沒有任何關係。

命令

  • 專案級別/倉庫級別:僅在當前本地庫範圍內有效
    • git config user.nametom_pro
    • git config user.emailgoodMorning_pro@atguigu.com
    • 資訊儲存位置:./.git/config檔案
      【Git】命令列操作
  • 系統使用者級別:登入當前作業系統的使用者範圍
    • git config --global user.nametom_glb
    • git config --global goodMorning_pro@atguigu.com
    • 資訊儲存位置:~/.gitconfig檔案(~代表根目錄)
      【Git】命令列操作
  • 級別優先順序
    • 就近原則:專案級別優先於系統使用者級別,二者都有時採用專案級別的簽名
    • 如果只有系統使用者級別的簽名,就以系統使用者級別的簽名為準
    • 二者都沒有不允許

3 基本操作

3. 1 狀態檢視

git status:檢視工作區、暫存區狀態

3. 2 新增

git add [filename]:將工作區的“新建/修改”新增到暫存區

  • filename:為欲新增的檔名,*代表當前目錄的所有檔案。

3. 3 提交

git commit -m "commit message" [filename]:將暫存區的內容提交到本地庫

3. 4 檢視歷史記錄

git log:檢視歷史記錄,顯示完整的歷史記錄資訊
【Git】命令列操作

多屏顯示控制方式:

  • 空格:向下翻頁
  • b:向上翻頁
  • q:退出

上面這種方法顯示的歷史記錄可能不太好看:我們可以採用以下方法進行簡化歷史記錄的顯示:

git log --pretty=oneline:我們可以使用此命令讓歷史記錄放在一行上
【Git】命令列操作

git log --oneline:縮短了雜湊值的顯示,只顯示後面7位
【Git】命令列操作

上面的幾種方法只能顯示過去與現在


下面這個命令可以顯示過去、現在和未來

git reflog:這種方式可以看到我們所有的歷史記錄,包括回退前、回退後、過去、現在、將來。
【Git】命令列操作
HEAD@{移動到當前版本需要多少步}

3. 5 前進後退

本質:使用git reflog來顯示所有歷史記錄
【Git】命令列操作

可以使用以下方法來移動HEAD指標
【Git】命令列操作
【Git】命令列操作

基於索引值操作[推薦]

  • git reset --hard [區域性索引值]
  • git reset --hard a6ace91

使用^符號:只能後退

  • git reset --hardHEAD^:一個^表示後退一步,n個表示後退n步

使用~符號:只能後退

  • git reset --hardHEAD~n:表示後退n步

3. 6 reset 命令的三個引數對比

原本本地庫、暫存區、工作區三者版本一致:

--soft引數

  • 僅僅在本地庫移動HEAD指標
    【Git】命令列操作
    這裡可以看出,我們的本地庫版本退後了一步,而其他的都沒改變

--mixed引數

  • 在本地庫移動HEAD指標
  • 重置暫存區(重置,即 後退版本)
    【Git】命令列操作

--hard引數(這個用的最多)

  • 在本地庫移動HEAD指標
  • 重置暫存區
  • 重置工作區
    【Git】命令列操作

3. 7 刪除檔案並找回

前提:刪除前,檔案存在時的狀態提交到了本地庫。

操作:git reset --hard [指標位置]

  • 刪除操作已經提交到本地庫:指標位置指向歷史記錄
  • 刪除操作尚未提交到本地庫:指標位置使用HEAD

3. 8 比較檔案差異

git diff [檔名]:將工作區中的檔案和暫存區進行比較

git diff [本地庫中歷史版本] [檔名]:將工作區中的檔案和本地庫歷史記錄比較

git diff:不帶檔名比較多個檔案

4 分支管理

4. 1 什麼是分支?

在版本控制過程中,使用多條線同時推進多個任務。
【Git】命令列操作

4. 2 分支的好處?

  • 同時並行推進多個功能開發,提高開發效率
  • 各個分支在開發過程中,如果某一個分支開發失敗,不會對其他分支有任何影響。失敗的分支刪除重新開始即可。

4. 3 分支操作

git branch [分支名]:建立分支

git branch -v:檢視分支

git checkout [分支名]:切換分支

合併分支

  • 第一步:切換到接受修改的分支(被合併,增加新內容)上
    git checkout [被合併分支名]
  • 第二步:執行merge命令
    git merge [有新內容分支名]

解決衝突

  • 衝突的表現
    【Git】命令列操作

  • 衝突的解決
    • 第一步:編輯檔案,刪除特殊符號
    • 第二步:把檔案修改到滿意的程度,儲存退出
    • 第三步:git add [檔名]
    • 第四步:git commit -m "日誌資訊"

      注意:此時commit一定不能帶具體檔名

命令列常用操作步驟

情況一:建立自己的專案

1. 建立遠端庫

【Git】命令列操作
【Git】命令列操作

2. 建立遠端庫地址別名

git remote -v 檢視當前所有遠端地址別名
git remote add [別名] [遠端地址]
【Git】命令列操作

3. 推送

git push [別名] [分支名]
【Git】命令列操作

推送需要輸入賬號和密碼:
【Git】命令列操作

情況二:克隆別人的專案

1. 克隆遠端倉庫(從無到有)

git clone [遠端地址]
【Git】命令列操作

效果

  • 完整的把遠端庫下載到本地
  • 建立 origin 遠端地址別名
  • 初始化本地庫

情況三:更新已有的專案

1. 拉取(從舊到新)

  • pull=fetch+merge
  • git fetch [遠端庫地址別名] [遠端分支名]
  • git merge [遠端庫地址別名/遠端分支名]
  • git pull [遠端庫地址別名] [遠端分支名]

相關文章