一張腦圖帶你掌握Git命令
腦圖👇
本文更多梳理的是Git常用命令,非原理篇,需要這部分知識的可以往下看。
一圖解天下👇 首先我們的了解Git通常的操作流程,網(wǎng)上流行的不錯一張圖👇 Git經(jīng)典流程圖
基本概念 Git基本命令
基于上面的圖,我們就有接下來一些概念👇 版本庫👉.git 當我們使用git管理文件時,比如git init時,這個時候,會多一個.git文件,我們把這個文件稱之為版本庫。
.git文件另外一個作用就是它在創(chuàng)建的時候,會自動創(chuàng)建master分支,并且將HEAD指針指向master分支。
工作區(qū) 本地項目存放文件的位置
可以理解成圖上的workspace
暫存區(qū) (Index/Stage) 顧名思義就是暫時存放文件的地方,通過是通過add命令將工作區(qū)的文件添加到緩沖區(qū)
本地倉庫(Repository) 通常情況下,我們使用commit命令可以將暫存區(qū)的文件添加到本地倉庫
通常而言,HEAD指針指向的就是master分支
遠程倉庫(Remote) 舉個例子,當我們使用GitHub托管我們項目時,它就是一個遠程倉庫。
通常我們使用clone命令將遠程倉庫代碼拷貝下來,本地代碼更新后,通過push托送給遠程倉庫。
Git文件狀態(tài)
通常我們需要查看一個文件的狀態(tài)
- git status
- Changes not staged for commit
- 表示的大概就是工作區(qū)有該內(nèi)容,但是緩存區(qū)沒有,需要我們git add
- Changes to be committed
- 一般而言,這個時候,文件放在緩存區(qū)了,我們需要git commit
這個時候,我們將本地的代碼推送到遠端即可
- nothing to commit, working tree clean
常見命令
git配置命令
- git config --list
列出Repository配置
- git config --local --list
列出全局配置
- git config --global --list
列出系統(tǒng)配置
- git config --system --list
通過上述的命令,發(fā)現(xiàn)你并沒有配置用戶信息的話,接下來配置一下👇 配置用戶名
- 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
創(chuàng)建并切換到新建分支
- 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
查看哪些分支已經(jīng)合并到當前分支
- git branch --merged
查看哪些分支沒有合并到當前分支
- git branch --no-merged
查看各個分支最后一個提交對象的信息
- git branch -v
刪除遠程分支
- git push origin -d <branch-name>
重命名分支
- git branch -m <oldbranch-name> <newbranch-name>
拉取遠程分支并創(chuàng)建本地分支
- git checkout -b 本地分支名x origin/遠程分支名x
- // 另外一種方式,也可以完成這個操作。
- git fetch origin <branch-name>:<local-branch-name>
- // fetch這個指令的話,后續(xù)會梳理
fetch指令 Git命令fetch
我理解的就是將遠程倉庫內(nèi)容更新到本地,最近與師姐開發(fā)項目過程中,使用的就是這個命令。 具體是這樣子的👇 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
- // 一般情況下,我們需要做的就是在這個分支上開發(fā)新需求
- // 完成代碼后,我們需要做的就是上傳我們的分支
fetch其他寫法
將某個遠程主機的更新,全部取回本地。
- git fetch <遠程主機名>
這樣子的話,取回的是所有的分支更新,如果想取回特定分支,可以指定分支名
- git fetch <遠程主機名> <分支名>
當你想將某個分支的內(nèi)容取回到本地下某個分支的話,如下👇
- git fetch origin :<local-branch-name>
- // 等價于👇
- git fetch origin master:<local-branch-name>
- git checkout --
暫存區(qū)文件撤銷 (不覆蓋工作區(qū))
- git reset HEAD
版本回退
- git reset --(soft | mixed | hard ) < HEAD ~(num) > |
- 指令 作用范圍
- --hard 回退全部,包括HEAD,index,working tree
- --mixed 回退部分,包括HEAD,index
- --soft 只回退HEAD
工作區(qū)命令 狀態(tài)查詢
查看狀態(tài)
- git status
查看歷史操作記錄
- git reflog
查看日志
- git log
文檔查詢 展示Git命令大綱
- git help (--help)
展示Git命令大綱全部列表
- git help -a
展示具體命令說明手冊
- git help
- git stash save -a “message”
刪除暫存
- git stash drop <stash@{ID}>
查看stash列表
- git stash list
刪除全部緩存
- git stash clear
恢復改動
- git stash pop <stash@{ID}>
差異比較 Git文件比較
比較工作區(qū)與緩存區(qū)
- git diff
比較緩存區(qū)與本地庫最近一次commit內(nèi)容
- git diff -- cached
比較工作區(qū)與本地最近一次commit內(nèi)容
- git diff HEAD
比較兩個commit之間差異
- git diff
分支命名 Git分支管理規(guī)范
「master分支」 主分支,用于部署生產(chǎn)環(huán)境的分支,確保穩(wěn)定性。
master分支一般由develop以及hotfix分支合并,任何情況下都不能直接修改代碼。
「develop 分支」 develop為開發(fā)分支,通常情況下,保存最新完成以及bug修復后的代碼。
開發(fā)新功能時,feature分支都是基于develop分支下創(chuàng)建的。
「feature分支」 開發(fā)新功能,基本上以develop為基礎創(chuàng)建feature分支。
分支命名:feature/ 開頭的為特性分支, 命名規(guī)則: feature/user_module、 feature/cart_module。
**這點我深有體會,我在網(wǎng)易,mentor就是這么教我的,**通常建一個feature分支。 「release分支」 release 為預上線分支,發(fā)布提測階段,會release分支代碼為基準提測。
「hotfix分支」 分支命名:hotfix/ 開頭的為修復分支,它的命名規(guī)則與 feature 分支類似。
線上出現(xiàn)緊急問題時,需要及時修復,以master分支為基線,創(chuàng)建hotfix分支,修復完成后,需要合并到master分支和develop分支。 基本操作
有了上述的基本了解后,那么我們就來看看整體的一個流程吧。 創(chuàng)建本地倉庫 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-keygen -t rsa -C "這里換上你的郵箱"
- cd ~/.ssh 里面有一個文件名為id_rsa.pub,把里面的內(nèi)容復制到git庫的我的SSHKEYs中
常看遠端倉庫信息
- git remote -v
遠端倉庫重新命名
提交到緩存區(qū)
- git remote rename old new
- git add 全部上傳到緩存區(qū)
- git add指定文件
提交到本地倉庫
提交遠程倉庫
- git commit -m 'some message'
查看分支
- git push <遠程主機名> <本地分支名>:<遠程分支名>
創(chuàng)建新分支
- git branch
切換分支
- git branch
創(chuàng)建分支并切換
- git checkout
刪除分支
- git checkout -b
刪除遠程分支
- git branch -d
切換分支
- git push -d
- git checkout
忽略文件 .gitignore
這個文件的作用,會去忽略一些不需要納入Git管理這種,我們也不希望出現(xiàn)在未跟蹤文件列表。 那么我們來看看如何配置該文件信息。
- # 此行為注釋 會被Git忽略
- # 忽略 node_modules/ 目錄下所有的文件
- node_modules
- # 忽略所有.vscode結(jié)尾的文件
- .vscode
- # 忽略所有.md結(jié)尾的文件
- *.md
- # 但README.md 除外
- !README.md
- # 會忽略 doc/something.txt 但不會忽略doc/images/arch.txt
- doc/*.txt
- # 忽略 doc/ 目錄下所有擴展名為txt文件
- doc/**/*.txt
參考
git基本操作,一篇文章就夠了!
Git 常用操作總結(jié)
您必須知道的 Git 分支開發(fā)規(guī)范
如何優(yōu)雅地使用 Git
優(yōu)雅的提交你的 Git Commit Message
詳解git pull和git fetch的區(qū)別
十分鐘的時間,武裝你的代碼庫
「備忘錄」60+Git常用命令行