Git學習筆記 —— 基本操作與概念

Github學習筆記 —— 基本操作與概念

​ 最近在使用在線環境進行學習,但是又不想學習過程中的代碼直接丟掉,因此就嘗試着使用Github將代碼進行管理。學習筆記一方面爲了防止學習過程中使用到的指令忘記,另一方面也爲了加深印象。

  1. git --version

  2. git clone [倉庫地址]
    eg:git clone https://github.com/Hualuoxi/Shiyanlou-001.git

    在這裏插入圖片描述

  3. 在 GitHub 上創建一個倉庫時,同時生成了倉庫的默認主機名 origin,並創建了默認分支 master。GitHub 可以看成是免費的 Git 服務器,在 GitHub 上創建倉庫,會自動生成一個倉庫地址,主機就是指代這個倉庫,主機名就等於這個倉庫地址。克隆一個 GitHub 倉庫(也叫遠程倉庫)到本地,本地倉庫則會自動關聯到這個遠程倉庫。執行 git remote -v 命令可以查看本地倉庫所關聯的遠程倉庫信息。

  4. git remote -v

在這裏插入圖片描述

  1. Git 要求對本地倉庫關聯的每個遠程主機都必須指定一個主機名(默認爲 origin),用於本地倉庫識別自己關聯的主機,git remote 命令就用於管理本地倉庫所關聯的主機,一個本地倉庫可以關聯任意多個主機(即遠程倉庫)。

  2. 克隆遠程倉庫到本地時,還可以使用 -o 選項修改主機名,在地址後面加上一個字段作爲本地倉庫的主目錄名
    eg:git clone -o hualuo https://github.com/Hualuoxi/Shiyanlou-001.git Sillycat
    在這裏插入圖片描述

  3. 所有的Git命令均以git開頭

  4. Git 本地倉庫有三大區域:工作區、暫存區、版本區。

    在這裏插入圖片描述

  5. git status

    在這裏插入圖片描述

    新建文件後,命令行前綴出現*****號表示工作區或者暫存區有變化,對文件進行增刪操作均會出現,使用git status 命令可以查看詳情

在這裏插入圖片描述

  1. git add [文件名]

    在這裏插入圖片描述

    對多個文件同時進行增刪修改使用git add .命令全部添加到暫存區。當修改了工作區,git add 命令是將這些修改添加到暫存區,暫存區記錄的只是修改。

  2. git reset -- [文件名]

    git rm --cached [文件名]

    在這裏插入圖片描述

在這裏插入圖片描述

  若取消後面的文件名使用`git reset --`即可把**暫存區所有的修改撤銷**,又回到工作區。
  1. git diff

    執行該命令後會進入工作區修改詳細頁面,按Q退出

    在這裏插入圖片描述

    在這裏插入圖片描述

  2. 只有在版本區中存在的文件纔是被跟蹤文件。

  3. git diff --cached

    在這裏插入圖片描述

    在這裏插入圖片描述

  4. git commit

    一個必須的選型-m用來提供該提交的備註

    在這裏插入圖片描述

    提交後暫存區的修改被清空

  5. git log

    輸入後跳入新界面,Q鍵退出

    在這裏插入圖片描述

    • git log [分支名]
    • git log --oneline
    • git log -n
    • git log --author [貢獻者名字]
    • git log --graph
    • git log --reverse
  6. 對Git進行本地配置,將修改提交到版本區需要驗證身份

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

    git config --global user.name "xxxxx"

    git config -l
    在這裏插入圖片描述

  7. git branch -avv

    在這裏插入圖片描述

    第一行,開頭的星號表示當前所在分支,綠色的 master 是分支名,之所以是綠色,也是因爲它是當前所在分支。後面第二項是版本號,第三項中括號裏面藍色的字,表示此分支跟蹤的遠程分支的名字,當然啦,這也是克隆遠程倉庫到本地時的默認設置 – 創建 master 分支並自動跟蹤遠程同名分支;冒號後面黑色文字表示本地分支領先其跟蹤的遠程分支一個提交。最後一項是提交時填寫的備註信息。

    第二行,是 Git 指針信息,它指向遠程倉庫的 master 分支。

    第三行,遠程分支信息。

  8. git push

    需要聯網,因爲操作對遠程倉庫進行了修改

  9. git reset --soft HEAD^

    --soft 表示軟退回,對應的還有 --hard 硬退回,HEAD^ 表示撤銷一次提交,HEAD^^ 表示撤銷兩次提交,撤銷 n 次可以簡寫爲 HEAD~n

    軟退回一個提交後執行 git branch -avv 命令查看分支信息

    在這裏插入圖片描述

    執行 git status 查看倉庫狀態,上一個提交中的修改全部扔回了暫存區

    在這裏插入圖片描述
    撤回後再修改的版本會出現時間線分叉,執行 git statusgit branch -avv查看倉庫狀態和分支狀態

    在這裏插入圖片描述

    本地倉庫的 master 分支與遠程倉庫的 origin/master 分支在提交版本上有了衝突,又叫做提交時間線分叉。因爲剛纔的提交操作不是基於遠程倉庫 origin/master 分支的最新提交版本,而是撤回了一個版本。這種情況下也是可以將本地 master 分支推送到遠程倉庫的,需要加一個選項 -f ,它是 --force 的簡寫,這就是強制推送

    在這裏插入圖片描述

  10. git reflog

    在這裏插入圖片描述

    退回之前的版本,可以直接執行命令 git reset --hard [版本號] ,如果記不清版本號,也可以根據上圖的信息,執行 git reset --hard HEAD@{x} 命令,其中 HEAD@{x}就是上圖所示,這個命令的意思是回到當前分支最近x次提交版本變化前

![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20190805174850406.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxNDEzODg2MTgz,size_16,color_FFFFFF,t_70)
  1. 爲避免每次提交文件都需要手動輸入用戶名和密碼,可以在系統中創建SSH公私匙,並將其放到Github中。如此操作即可生成Github賬戶對於當前系統中的Git授權。

    執行以下命令生成公私匙

    ssh-keygen

    公私匙存放在home目錄下的隱藏目錄.ssh的兩個文件中

    在這裏插入圖片描述

    ~/.ssh/id_rsa.pub文件中的公鑰內容複製出來。

    在這裏插入圖片描述

在這裏插入圖片描述

 ![在這裏插入圖片描述](https://img-blog.csdnimg.cn/2019080517494551.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxNDEzODg2MTgz,size_16,color_FFFFFF,t_70)

 ![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20190805174955745.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxNDEzODg2MTgz,size_16,color_FFFFFF,t_70)

![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20190805175008574.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxNDEzODg2MTgz,size_16,color_FFFFFF,t_70)

 **只有使用這種git開頭的地址克隆倉庫,SSH關聯纔會起作用**

 使用 SSH 的好處主要有兩點:

 - 免密碼推送,執行 `git push` 時不再需要輸入用戶名和密碼了;
 - 提高數據傳輸速度。
  1. git config --global alias.[別名] [原命令]

    如果原名中存在選項,則需要加引號

    在這裏插入圖片描述

  2. git config -l

  3. git fetch

    若發現有更新,可以執行 git pull 命令來拉取遠程分支到本地,pull 是拉取遠程倉庫的數據到本地,需要聯網,而由於前面執行過 git fetch 命令,所以也可以執行 git rebase origin/master 命令來實現 “使本地 master 分支基於遠程倉庫的 master 分支”。

  4. git branch [分支名]

    在這裏插入圖片描述

  5. git checkout [分支名]

    在這裏插入圖片描述

  6. git checkout -b [分支名]

  7. 在哪個分支上創建新分支,新分支的提交記錄就與哪個分支一致。新建分支並無跟蹤任何遠程分支,所以沒有 master 分支中的中括號和括號內的藍色遠程分支名。

  8. git push [主機名] [本地分支名]:[遠程分支名]

    通常冒號前後的分支名是相同的,如果是相同的,可以省略 :[遠程分支名],如果遠程分支不存在,會自動創建。

    在這裏插入圖片描述

    在這裏插入圖片描述

  9. git branch -u [主機名/遠程分支名] [本地分支名]

    關聯後的分支只需要使用git push即可直接進行推送。如果是設置當前所在分支跟蹤遠程分支,最後一個參數本地分支名可以省略不寫。

    在這裏插入圖片描述

    這個命令的 -u 選項是 --set-upstream 的縮寫。事實上可以讓本地分支跟蹤遠程非同名分支,儘管幾乎遇不到這種自找麻煩的需求。同樣的,執行 git branch --unset-upstream [分支名] 可以撤銷該分支對遠程分支的跟蹤,如果撤銷當前所在的分支的跟蹤,分支名可以省略不寫。

    在推送的時候,加個 --set-upstream 或其簡寫 -u 選項可以在推送時就自動跟蹤遠程分支。而不需要先推送到遠程倉庫,使遠程倉庫創建新的分支,然後再執行命令使本地分支跟蹤遠程分支。

    在這裏插入圖片描述

  10. git push [主機名] :[遠程分支名]

    git push [主機名] :[遠程分支名] :[遠程分支名] :[遠程分支名]

    此命令的原理是將空分支推送到遠程分支。

    git push [主機名] --delete [遠程分支名]

![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20190805175152183.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxNDEzODg2MTgz,size_16,color_FFFFFF,t_70)

![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20190805175246250.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxNDEzODg2MTgz,size_16,color_FFFFFF,t_70)
  1. git branch -D [分支名]

    同樣地,此命令也可以一次刪除多個,將需要刪除的分支名羅列在命令後面即可。需要注意的一點:當前所在的分支不能被刪除

  2. git branch -m [原分支名] [新分支名]

    若修改當前所在分支的名字,原分支名可以省略不寫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章