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