「一勞永逸」一張腦圖帶你掌握Git命令
關(guān)注▲?W3Cschool▲?,每天一篇文章,與你共同成長

作者丨TianTianUp
來源丨前端UpUp
前言
最近在網(wǎng)易工作之余,遇到Git上面一些問題,趁這次的機會,補一補Git基礎(chǔ)知識。
腦圖?

腦圖下載鏈接:
https://pan.baidu.com/s/1KHEyx4L04VPx8b5KKzvDZg?
提取碼:Tian
「本文更多梳理的是Git常用命令,非原理篇,需要這部分知識的可以往下看。」
一圖解天下?
首先我們的了解Git通常的操作流程,網(wǎng)上流行的不錯一張圖?

基本概念

基于上面的圖,我們就有接下來一些概念?
版本庫?
.git當(dāng)我們使用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分支 遠(yuǎn)程倉庫(Remote)
舉個例子,當(dāng)我們使用GitHub托管我們項目時,它就是一個遠(yuǎn)程倉庫。 通常我們使用clone命令將遠(yuǎn)程倉庫代碼拷貝下來,本地代碼更新后,通過push托送給遠(yuǎn)程倉庫。
Git文件狀態(tài)
通常我們需要查看一個文件的狀態(tài)
git statusChanges not staged for commit表示得大概就是工作區(qū)有該內(nèi)容,但是緩存區(qū)沒有,需要我們 git addChanges to be committed一般而言,這個時候,文件放在緩存區(qū)了,我們需要 git commitnothing to commit, working tree clean這個時候,我們將本地的代碼推送到遠(yuǎn)端即可
常見命令
git配置命令

列出當(dāng)前配置
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 "[email protected]"分支管理

查看本地分支
git branch查看遠(yuǎn)程分支
git branch -r查看本地和遠(yuǎn)程分支
git branch -a從當(dāng)前分支,切換到其他分支
git checkout// 舉個例子git checkout feature/tiantian
創(chuàng)建并切換到新建分支
git checkout -b// 舉個例子?git checkout -b feature/tiantian
刪除分支
git branch -d// 舉個例子?git branch -d feature/tiantian
當(dāng)前分支與指定分支合并
git merge// 舉個例子?git merge feature/tiantian
查看哪些分支已經(jīng)合并到當(dāng)前分支
git branch --merged查看哪些分支沒有合并到當(dāng)前分支
git branch --no-merged查看各個分支最后一個提交對象的信息
git branch -v刪除遠(yuǎn)程分支
git push origin -d 重命名分支
git branch -m 拉取遠(yuǎn)程分支并創(chuàng)建本地分支
git checkout -b 本地分支名x origin/遠(yuǎn)程分支名x// 另外一種方式,也可以完成這個操作。git fetch origin: // fetch這個指令的話,后續(xù)會梳理
fetch指令

我理解的就是將遠(yuǎn)程倉庫內(nèi)容更新到本地,最近與師姐開發(fā)項目過程中,使用的就是這個命令。
具體是這樣子的?
fetch推薦寫法
git fetch origin : 一般而言,這個origin是遠(yuǎn)程主機名,一般默認(rèn)就是origin。 branch-name?你要拉取的分支local-branch-name?通常而言,就是你本地新建一個新分支,將origin下的某個分支代碼下載到本地分支。
舉個例子?
git fetch origin feature/template_excellent:feature/template_layout// 你的工作目錄下,就會有feature/template_layout// 一般情況下,我們需要做的就是在這個分支上開發(fā)新需求// 完成代碼后,我們需要做的就是上傳我們的分支
fetch其他寫法
將某個遠(yuǎn)程主機的更新,全部取回本地。
git fetch <遠(yuǎn)程主機名>這樣子的話,取回的是所有的分支更新,如果想取回特定分支,可以指定分支名?
git fetch <遠(yuǎn)程主機名> <分支名>當(dāng)你想將某個分支的內(nèi)容取回到本地下某個分支的話,如下?
git fetch origin :// 等價于?git fetch origin master:
花式撤銷

撤銷「工作區(qū)」修改
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
文件暫存

添加改動到stash
git stash save -a “message” 刪除暫存
git stash drop 查看stash列表
git stash list 刪除全部緩存
git stash clear 恢復(fù)改動
git stash pop
差異比較

比較工作區(qū)與緩存區(qū) git diff 比較緩存區(qū)與本地庫最近一次commit內(nèi)容 git diff -- cached 比較工作區(qū)與本地最近一次commit內(nèi)容 git diff HEAD 比較兩個commit之間差異 git diff
分支命名

「master分支」
主分支,用于部署生產(chǎn)環(huán)境的分支,確保穩(wěn)定性。 master分支一般由develop以及hotfix分支合并,任何情況下都不能直接修改代碼。
「develop 分支」
develop為開發(fā)分支,通常情況下,保存最新完成以及bug修復(fù)后的代碼。 開發(fā)新功能時,feature分支都是基于develop分支下創(chuàng)建的。
「feature分支」
開發(fā)新功能,基本上以develop為基礎(chǔ)創(chuàng)建feature分支。 分支命名:feature/ 開頭的為特性分支, 命名規(guī)則: feature/user_module、 feature/cart_module。
**這點我深有體會,我在網(wǎng)易,mentor就是這么教我的,**通常建一個feature分支。
「release分支」
release 為預(yù)上線分支,發(fā)布提測階段,會release分支代碼為基準(zhǔn)提測。
「hotfix分支」
分支命名:hotfix/ 開頭的為修復(fù)分支,它的命名規(guī)則與 feature 分支類似。 線上出現(xiàn)緊急問題時,需要及時修復(fù),以master分支為基線,創(chuàng)建hotfix分支,修復(fù)完成后,需要合并到master分支和develop分支。
參考來著:稻草叔叔
基本操作
有了上述的基本了解后,那么我們就來看看整體的一個流程吧。
創(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密鑰
?
ssh-keygen -t rsa -C "這里換上你的郵箱"
cd ~/.ssh 里面有一個文件名為id_rsa.pub,把里面的內(nèi)容復(fù)制到git庫的我的SSHKEYs中
?常看遠(yuǎn)端倉庫信息
git remote -v 遠(yuǎn)端倉庫重新命名
git remote rename old new 提交到緩存區(qū)
git add . ?全部上傳到緩存區(qū) git add 指定文件 提交到本地倉庫
git commit -m 'some message' 提交遠(yuǎn)程倉庫
git push <遠(yuǎn)程主機名> <本地分支名>:<遠(yuǎn)程分支名> 查看分支
git ?branch 創(chuàng)建新分支
git branch 切換分支
git checkout 創(chuàng)建分支并切換
git checkout -b 刪除分支
git branch -d 刪除遠(yuǎn)程分支
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.txtdoc/*.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常用命令行
-End-
編程獅(W3Cschool)
學(xué)編程,從W3Cschool開始
微信掃描二維碼,關(guān)注公眾號
