1. 程式人生 > 其它 >git常用指令總結

git常用指令總結

前言

  Git 作為開發中最常用的程式碼版本控制工具,本文來總結下常見的使用指令。

正文

  1、git 倉庫常見概念

  2、常用命令

  (1)git init 初始化本地專案

  將本地專案初始化git目錄,在當前資料夾下回多出 .git 字尾的檔案

  (2)git clone 將遠端倉庫克隆到本地

  與 git init 命令相似,git init 是將當前資料夾作為本地倉庫,git clone 是將遠端團隊協作倉庫下載至本地作為本地倉庫

  (3)git status 檢視工作區、暫存區狀態

  如下會提示當前分支,當前暫存區需要提交的內容

  (4)git add

  git add fileName 將名為fileNmae的檔案新增到暫存區

  git add . add後面加空格加點,表示將所有檔案新增到暫存區

  (5)git commit

  git commit -m "提交說明" 將暫存區的檔案進行提交到本地倉庫對應的分支(分支管理常常用於程式碼的版本控制,同樣也可以為了方便多人協作,比如開發中,master表示線上分支,develop 表示開發用的分支,同樣也可以在develop 分支基礎上建立每個開發人員對應的分支,在開發完成後,提交到自己獨立的分支,測試通過後,通過每個人的獨立分支合併到 develop 分支,待develop分支測試通過的功能合併至master線上分支上線)

  提交說明需要注意以下格式:

  a、feat 表示新增新特性 ,例如:git commit -m "feat:新增微信支付功能"

  b、fix 表示修復 bug

  c、docs 表示僅僅修改了文件

  d、style 表示僅僅修改了空格、格式縮排、逗號等等,不改變程式碼邏輯

  e、refactor 表示程式碼重構,沒有新增新功能或者修復bug

  f、test 表示增加測試用例

  g、chore 表示改變構建流程、或者增加依賴庫、工具等

  h、revert 表示回滾到上一個版本

  (6)git fetch 和 git merge

  git fetch 將遠端倉庫對應分支上的最新修改下載下來,比如可以 git fetch origin master ,該命令只是把遠端修改資料下載到了遠端的副本倉庫,並沒有下在到本地倉庫

  git merge master 合併master分支到當前所在分支  

  下面需要了解一下概念:

  (1)master 這個很好理解,它代表本地的某個分支名。

  (2)origin master 代表著兩個概念,前面的 origin 代表遠端名,後面的 master 代表遠端分支名

  (3)origin/master 只代表一個概念,即遠端分支名,是從遠端拉取程式碼後在本地建立的一份拷貝,叫跟蹤分支,與 本地 master 十分相似(因此也有人把它叫作本地分支)。

  (7)git pull

  將當前分支在遠端倉庫中的程式碼拉取到本地版本庫並進行合併,效果相當於 git fetch + git merge,但是還是存在差異,如下:

  我們每次commit 之後會生成一個hash值,代表本地修改的版本號,然後push到遠端倉庫,遠端倉庫會記錄這個hash值。git fetch 只會更新跟蹤分支,(我們無法對跟蹤分支直接進行操作),比如我們本地的 .git 資料夾下有 head 和 remotes 兩個資料夾,分別記錄本地分支和正在跟蹤的分支,暫定這兩個分支的hash都為1,當遠端協作倉庫有人提交了程式碼後,遠端倉庫最新的提交hash變為了2,在本地執行 git fetch 後,會將跟蹤分支的hash變為2,但是本地分支hash還是原來的1,這時候如果執行 git merge origin/master 就會將本地的master分支hash更新為2。如果不執行git fetch 和 git merge 直接執行 git pull ,則會將本地分支和跟蹤分支更新到最新的2.

  git fetch 、git merge 、git pull三者區別如下:

  (8)git push

  將本地版本庫中的程式碼推送至遠端協作倉庫

  (9)git remote

  a、git remote add 遠端倉庫別名 遠端倉庫地址

  該命令建立本地版本庫和遠端倉庫的關聯,我們如果通過git init 建立本地倉庫,在推送至遠端協作倉庫的時候,需要先新增之間的關聯

  b、git remote -v 常看當前本地版本庫關聯的協作倉庫

  (10)git branch 分支相關

  git branch 分支名 建立新分支,例如git branch dev-pay 建立dev-pay分支(預設基於master建立)

  git push 遠端倉庫別名 遠端倉庫分支名 將新增分支推至遠端倉庫,例如:git push origin dev-pay,如果在當前的dev-pay 修改了程式碼,提交時需要 git branch --set-upstream origin dev(origin 預設為遠端倉庫別名)

  git branch 檢視本地倉庫分支,* 表示當前分支

  git branch -r 檢視所有遠端倉庫分支

  git branch -a 檢視所有分支

  git branch -d 分支名 刪除本地指定分支

  git push origin :分支名 分支錢加冒號代表刪除遠端分支

  git checkout dev-pay 切換到dev-pay分支

  a、如果想基於某指定分支建立新分支,比如基於dev-pay,需要如下命令:

  (1)git checkout dev-pay git pull 切換到dev-pay 分支並拉去最新程式碼

  (2)git checkout -b dev-info 建立dev-info 分支

  (3)git branch -a 檢視所有分支,發現遠端還沒有dev-info 分支

  (4)git push origin dev-info 將本地新增分支推送到遠端,再次檢視就會發現遠端也多了該分支

  (5)git branch --set-upstream-to=origin/dev-info 建立當前分支和遠端倉庫之間的分支guanlian

  b、基於某次commit hash 值255da52811720773ae627e705a6ddab6e8f9019b建立指定分支 dev-hash

  (1)git log 檢視需要版本的 commit 的 hash 值

  (2)git checkout -b dev-hash 255da52811720773ae627e705a6ddab6e8f9019b 本地建立dev-hash 並切換

  (3)重複上面基於分支建立分支

  (11)git reset 和 git revert

  git log 檢視每次commit 的hash值

  a、git reset

  git reset --hasd 255da52811720773ae627e705a6ddab6e8f9019b

  git add .

  git commit -m "回退"

  git push -f 強行推送到遠端

  b、git revert

  git revert 255da52811720773ae627e705a6ddab6e8f9019b

  區別:給reset 會將版本回退回去,撤銷之後的提交,revert 會將本地提交內容修改為原來版本的內容,作為一次新的提交

  c、將某個檔案回退到某次提交

  1 檢視提交歷史,檢視想要回退版本的版本號git log index.txt

  2 回滾某個檔案到指定版本git reset 版本號 index.txt

  3 提交到本地倉庫-拉取合併程式碼-提交到遠端git commit -m '提交描述'

  4 選擇該檔案git checkout index.txt

  5 push到遠端倉庫git push

  3、派生倉庫提交命令

  git add .

  git commit -m "fix:提交"

  git remote -v 檢視本地關聯的倉庫

  git pull origin 拉取派生倉庫程式碼到本地

  git push origin 提交本次修改的程式碼到派生倉庫

  git remote update yaxt 更新原始倉庫狀態

  git pull yaxt develop 拉取原始倉庫develop分支到本地

  git push origin 提交到派生倉庫

寫在最後

  以上就是本文的全部內容,希望給讀者帶來些許的幫助和進步,方便的話點個關注,小白的成長之路會持續更新一些工作中常見的問題和技術點。