一張腦圖帶你完全掌握Git

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


Git學習腦圖

image


若是以爲看完文章有所收穫的話,能夠關注我一下哦
知乎:禿頂之路
b站:linux亦有歸途
天天都會更新咱們的公開課錄播以及編程乾貨和大廠面經
或者直接點擊連接
c/c++ linux服務器開發高級架構師
來課堂上跟咱們講師面對面交流
須要大廠面經跟學習大綱的小夥伴能夠加羣973961276獲取linux


基本概念

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

  • 版本庫👉.git
  • 當咱們使用git管理文件時,好比git init時,這個時候,會多一個.git文件,咱們把這個文件稱之爲版本庫。
  • .git文件另一個做用就是它在建立的時候,會自動建立master分支,而且將HEAD指針指向master分支。
  • 工做區
  • 本地項目存放文件的位置
  • 能夠理解成圖上的workspace
  • 暫存區 (Index/Stage)
  • 顧名思義就是暫時存放文件的地方,經過是經過add命令將工做區的文件添加到緩衝區
  • 本地倉庫(Repository)
  • 一般狀況下,咱們使用commit命令能夠將暫存區的文件添加到本地倉庫
  • 一般而言,HEAD指針指向的就是master分支
  • 遠程倉庫(Remote)
  • 舉個例子,當咱們使用GitHub託管咱們項目時,它就是一個遠程倉庫。
  • 一般咱們使用clone命令將遠程倉庫代碼拷貝下來,本地代碼更新後,經過push託送給遠程倉庫。
    • *

-git

Git文件狀態

  • 一般咱們須要查看一個文件的狀態

git status 複製代碼github

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

-編程

常見命令 git配置命令

  • 列出當前配置

git config --list 複製代碼緩存

  • 列出Repository配置

git config --local --list 複製代碼服務器

  • 列出全局配置

git config --global --list 複製代碼架構

  • 列出系統配置

git config --system --list 複製代碼 經過上述的命令,發現你並無配置用戶信息的話,接下來配置一下👇ssh

  • 配置用戶名

git config --global user.name "your name" 複製代碼

  • 配置用戶郵箱

git config --global user.email "youremail@github.com" 複製代碼


-

分支管理

  • 查看本地分支

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指令

我理解的就是將遠程倉庫內容更新到本地,最近與師姐開發項目過程當中,使用的就是這個命令。 具體是這樣子的👇 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 checkout --
  • 暫存區文件撤銷 (不覆蓋工做區)
  • git reset HEAD
  • 版本回退
  • git reset --(soft | mixed | hard ) < HEAD ~(num) > |

指令

做用範圍


狀態查詢

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

文檔查詢

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

-

文件暫存

  • 添加改動到stash
  • git stash save -a 「message」
  • 刪除暫存
  • git stash drop <stash@{ID}>
  • 查看stash列表
  • git stash list
  • 刪除所有緩存
  • git stash clear
  • 恢復改動
  • git stash pop <stash@{ID}>
    • *

-

差別比較

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

-

分支命名

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

相關文章
相關標籤/搜索