首先咱們的瞭解Git一般的操做流程,網上流行的不錯一張圖👇node
Git學習腦圖
若是以爲看完文章有所收穫的話,能夠關注我一下哦
知乎:禿頂之路
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 複製代碼緩存
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分支
- 主分支,用於部署生產環境的分支,確保穩定性。
- master分支通常由develop以及hotfix分支合併,任何狀況下都不能直接修改代碼。
develop 分支
- develop爲開發分支,一般狀況下,保存最新完成以及bug修復後的代碼。
- 開發新功能時,feature分支都是基於develop分支下建立的。
feature分支
- 開發新功能,基本上以develop爲基礎建立feature分支。
- 分支命名:feature/ 開頭的爲特性分支, 命名規則: feature/user_module、 feature/cart_module。
這點我深有體會,我在網易,mentor就是這麼教個人,一般建一個feature分支。 release分支
- release 爲預上線分支,發佈提測階段,會release分支代碼爲基準提測。
hotfix分支
- 分支命名:hotfix/ 開頭的爲修復分支,它的命名規則與 feature 分支相似。
- 線上出現緊急問題時,須要及時修復,以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