「一勞永逸」一張腦圖帶你掌握Git命令

前言

最近在網易工做之餘,遇到Git上面一些問題,趁此次的機會,補一補Git基礎知識。前端

公衆號前端UpUp,回覆Git,便可獲取腦圖。node

聯繫👉TianTianUp,有驚喜噢❤️webpack

腦圖👇git

Git腦圖

本文更多梳理的是Git經常使用命令,非原理篇,須要這部分知識的能夠往下看。github


首先咱們的瞭解Git一般的操做流程,網上流行的不錯一張圖👇web

Git經典流程圖


基本概念

Git基本命令

基於上面的圖,咱們就有接下來一些概念👇面試

  • 版本庫👉.git瀏覽器

    • 當咱們使用git管理文件時,好比git init時,這個時候,會多一個.git文件,咱們把這個文件稱之爲版本庫。
    • .git文件另一個做用就是它在建立的時候,會自動建立master分支,而且將HEAD指針指向master分支。
  • 工做區緩存

    • 本地項目存放文件的位置
    • 能夠理解成圖上的workspace
  • 暫存區 (Index/Stage)bash

    • 顧名思義就是暫時存放文件的地方,經過是經過add命令將工做區的文件添加到緩衝區
  • 本地倉庫(Repository)

    • 一般狀況下,咱們使用commit命令能夠將暫存區的文件添加到本地倉庫
    • 一般而言,HEAD指針指向的就是master分支
  • 遠程倉庫(Remote)

    • 舉個例子,當咱們使用GitHub託管咱們項目時,它就是一個遠程倉庫。
    • 一般咱們使用clone命令將遠程倉庫代碼拷貝下來,本地代碼更新後,經過push託送給遠程倉庫。

Git文件狀態

  • 一般咱們須要查看一個文件的狀態
git status
複製代碼
  • Changes not staged for commit
    • 表示得大概就是工做區有該內容,可是緩存區沒有,須要咱們git add
  • Changes to be committed
    • 通常而言,這個時候,文件放在緩存區了,咱們須要git commit
  • nothing to commit, working tree clean
    • 這個時候,咱們將本地的代碼推送到遠端便可

常見命令

git配置命令

Git配置命令

  • 列出當前配置
git config --list	
複製代碼
  • 列出Repository配置
git config --local --list
複製代碼
  • 列出全局配置
git config --global --list
複製代碼
  • 列出系統配置
git config --system --list
複製代碼

經過上述的命令,發現你並無配置用戶信息的話,接下來配置一下👇

  • 配置用戶名
git config --global user.name "your name"
複製代碼
  • 配置用戶郵箱
git config --global user.email "youremail@github.com"
複製代碼

分支管理

Git分支管理

  • 查看本地分支
git branch
複製代碼
  • 查看遠程分支
git branch -r
複製代碼
  • 查看本地和遠程分支
git branch -a
複製代碼
  • 從當前分支,切換到其餘分支
git checkout <branch-name>
// 舉個例子
git checkout feature/tiantian
複製代碼
  • 建立並切換到新建分支
git checkout -b <branch-name>
// 舉個例子👇
git checkout -b feature/tiantian
複製代碼
  • 刪除分支
git branch -d <branch-name>
// 舉個例子👇
git branch -d feature/tiantian
複製代碼
  • 當前分支與指定分支合併
git merge <branch-name>
// 舉個例子👇
git merge feature/tiantian
複製代碼
  • 查看哪些分支已經合併到當前分支
git branch --merged
複製代碼
  • 查看哪些分支沒有合併到當前分支
git branch --no-merged
複製代碼
  • 查看各個分支最後一個提交對象的信息
git branch -v
複製代碼
  • 刪除遠程分支
git push origin -d <branch-name>
複製代碼
  • 重命名分支
git branch -m <oldbranch-name> <newbranch-name>
複製代碼
  • 拉取遠程分支並建立本地分支
git checkout -b 本地分支名x origin/遠程分支名x

// 另一種方式,也能夠完成這個操做。
git fetch origin <branch-name>:<local-branch-name>
// fetch這個指令的話,後續會梳理
複製代碼

fetch指令

Git命令fetch

我理解的就是將遠程倉庫內容更新到本地,最近與師姐開發項目過程當中,使用的就是這個命令。

具體是這樣子的👇

fetch推薦寫法

git fetch origin <branch-name>:<local-branch-name>
複製代碼
  • 通常而言,這個origin是遠程主機名,通常默認就是origin。
  • branch-name 你要拉取的分支
  • local-branch-name 一般而言,就是你本地新建一個新分支,將origin下的某個分支代碼下載到本地分支。

舉個例子👇

git fetch origin feature/template_excellent:feature/template_layout
// 你的工做目錄下,就會有feature/template_layout
// 通常狀況下,咱們須要作的就是在這個分支上開發新需求
// 完成代碼後,咱們須要作的就是上傳咱們的分支
複製代碼

fetch其餘寫法

  • 將某個遠程主機的更新,所有取回本地。
git fetch <遠程主機名> 
複製代碼
  • 這樣子的話,取回的是全部的分支更新,若是想取回特定分支,能夠指定分支名👇
git fetch <遠程主機名> <分支名>
複製代碼
  • 當你想將某個分支的內容取回到本地下某個分支的話,以下👇
git fetch origin :<local-branch-name>
// 等價於👇
git fetch origin master:<local-branch-name>
複製代碼

花式撤銷

Git花式撤銷

  • 撤銷工做區修改

    • git checkout --
  • 暫存區文件撤銷 (不覆蓋工做區)

    • git reset HEAD
  • 版本回退

    • git reset --(soft | mixed | hard ) < HEAD ~(num) > |

    • 指令 做用範圍
      --hard 回退所有,包括HEAD,index,working tree
      --mixed 回退部分,包括HEAD,index
      --soft 只回退HEAD

狀態查詢

  • 查看狀態
    • git status
  • 查看歷史操做記錄
    • git reflog
  • 查看日誌
    • git log

文檔查詢

  • 展現Git命令大綱
    • git help (--help)
  • 展現Git命令大綱所有列表
    • git help -a
  • 展現具體命令說明手冊
    • git help

文件暫存

Git命令文件暫存

  • 添加改動到stash

    • git stash save -a 「message」
  • 刪除暫存

    • git stash drop <stash@{ID}>
  • 查看stash列表

    • git stash list
  • 刪除所有緩存

    • git stash clear
  • 恢復改動

    • git stash pop <stash@{ID}>

差別比較

Git文件比較

  • 比較工做區與緩存區
    • git diff
  • 比較緩存區與本地庫最近一次commit內容
    • git diff -- cached
  • 比較工做區與本地最近一次commit內容
    • git diff HEAD
  • 比較兩個commit之間差別
    • git diff

分支命名

Git分支管理規範

master分支

  1. 主分支,用於部署生產環境的分支,確保穩定性。
  2. master分支通常由develop以及hotfix分支合併,任何狀況下都不能直接修改代碼。

develop 分支

  1. develop爲開發分支,一般狀況下,保存最新完成以及bug修復後的代碼。
  2. 開發新功能時,feature分支都是基於develop分支下建立的。

feature分支

  1. 開發新功能,基本上以develop爲基礎建立feature分支。
  2. 分支命名:feature/ 開頭的爲特性分支, 命名規則: feature/user_module、 feature/cart_module。

**這點我深有體會,我在網易,mentor就是這麼教個人,**一般建一個feature分支。

release分支

  1. release 爲預上線分支,發佈提測階段,會release分支代碼爲基準提測。

hotfix分支

  1. 分支命名:hotfix/ 開頭的爲修復分支,它的命名規則與 feature 分支相似。
  2. 線上出現緊急問題時,須要及時修復,以master分支爲基線,建立hotfix分支,修復完成後,須要合併到master分支和develop分支。

參考來着:稻草叔叔


基本操做

有了上述的基本瞭解後,那麼咱們就來看看總體的一個流程吧。

  • 建立本地倉庫 git init

    git init

  • 連接本地倉庫與遠端倉庫

    git remote add origin

    origin默認是遠端倉庫別名 url 能夠是可使用https或者ssh的方式新建

  • 檢查配置信息

    • git config --list
  • Git user name 與email

    git config --global user.name "yourname"

    git config --global user.email "your_email"

  • 生成SSH密鑰

    ssh-keygen -t rsa -C "這裏換上你的郵箱"

    cd ~/.ssh 裏面有一個文件名爲id_rsa.pub,把裏面的內容複製到git庫的個人SSHKEYs中

  • 常看遠端倉庫信息

    • git remote -v
  • 遠端倉庫從新命名

    • git remote rename old new
  • 提交到緩存區

    • git add . 所有上傳到緩存區
    • git add 指定文件
  • 提交到本地倉庫

    • git commit -m 'some message'
  • 提交遠程倉庫

    • git push <遠程主機名> <本地分支名>:<遠程分支名>
  • 查看分支

    • git branch
  • 建立新分支

    • git branch
  • 切換分支

    • git checkout
  • 建立分支並切換

    • git checkout -b
  • 刪除分支

    • git branch -d
  • 刪除遠程分支

    • git push -d
  • 切換分支

    • git checkout

忽略文件 .gitignore

這個文件的做用,會去忽略一些不須要歸入Git管理這種,咱們也不但願出如今未跟蹤文件列表。

那麼咱們來看看如何配置該文件信息。

# 此行爲註釋 會被Git忽略

# 忽略 node_modules/ 目錄下全部的文件
node_modules


# 忽略全部.vscode結尾的文件
.vscode

# 忽略全部.md結尾的文件
*.md

# 但README.md 除外
!README.md

# 會忽略 doc/something.txt 但不會忽略doc/images/arch.txt
doc/*.txt

# 忽略 doc/ 目錄下全部擴展名爲txt文件

doc/**/*.txt

複製代碼

參考

❤️ 感謝你們

若是你以爲這篇內容對你挺有有幫助的話:

  1. 點贊支持下吧,讓更多的人也能看到這篇內容(收藏不點贊,都是耍流氓 -_-)
  2. 關注公衆號前端UpUp,按期爲你推送好文。
  3. 以爲不錯的話,也能夠閱讀TianTian近期梳理的文章(感謝掘友的鼓勵與支持🌹🌹🌹):
相關文章
相關標籤/搜索