在開發中,版本管理是避免“代碼混亂”“版本丟失”的關鍵——而 Git 作為最流行的分佈式版本控制系統,早已成為開發者的必備技能。但 Git 命令繁多,新手常陷入“記了又忘、用錯命令”的困境。

本文將以“本地→遠程、基礎→進階” 的邏輯,系統梳理 Git 核心命令,從初始化配置到團隊協作,再到緊急救場(撤銷回滾),幫你一次性掌握 90% 開發場景的 Git 操作,看完就能直接套用。

一、開篇必做:Git 基礎配置(首次使用一步到位)

安裝 Git 後,第一步必須配置“用户標識”——Git 會用這個信息標記所有提交記錄,方便團隊識別是誰改了代碼。

核心配置命令

| 命令 | 作用 | 示例 |

| `git config --global user.name "你的名字"` | 配置全局用户名(所有倉庫通用) | `git config --global user.name "Zhang San"` |

| `git config --global user.email "你的郵箱"` | 配置全局郵箱(需與遠程倉庫賬號一致) | `git config --global user.email "zhangsan@example.com"` |

| `git config --list` | 查看當前所有配置(驗證是否生效) | `git config --list` |

> 提示:如果某個倉庫需要單獨配置(比如工作郵箱和個人郵箱區分),去掉 `--global` 即可,僅對當前倉庫生效。

二、本地倉庫操作:掌握“文件→版本”的核心流程

本地倉庫是 Git 工作的基礎,所有代碼修改的“記錄、提交”都先在這裏完成。核心邏輯是:工作區(你寫代碼的地方)→ 暫存區(臨時存放修改)→ 本地倉庫(正式記錄版本)。

1. 初始化倉庫(兩種場景)

無論是新建項目,還是克隆遠程項目,這一步都是起點。

| 場景 | 命令 | 説明 |

| 新建本地項目 | `git init` | 進入項目目錄後執行,會生成隱藏的 `.git` 目錄(存儲版本信息,勿刪) |

| 克隆遠程項目 | `git clone <遠程倉庫地址>` | 直接複製遠程倉庫到本地,包含完整的歷史記錄(無需再 `git init`) |

示例: 

# 新建本地項目

mkdir my-blog && cd my-blog

git init

# 克隆遠程項目(比如 GitHub 上的倉庫)

git clone https://github.com/zhangsan/my-blog.git

2. 跟蹤文件與提交版本

這是本地開發最高頻的操作——寫好代碼後,把修改“保存”成一個版本。

| 操作目標 | 命令 | 説明 |

| 跟蹤新文件/暫存修改 | `git add <文件/目錄>` | - 單個文件:`git add index.html`<br>- 整個目錄:`git add src/`(跟蹤 `src` 下所有文件)<br>- 所有修改:`git add .`(謹慎用,確保只提交需要的文件) |

| 提交暫存區到倉庫 | `git commit -m "提交説明"` | 必須寫清晰的説明(如“feat: 新增登錄頁面”“fix: 修復按鈕點擊無響應”),方便後續查歷史 |

| 跳過暫存區直接提交 | `git commit -am "提交説明"` | 僅對“已跟蹤過的文件”生效(新增文件必須先 `git add`) |

示例流程: 

# 1. 寫代碼後,查看修改狀態

git status  # 會顯示哪些文件被修改/未跟蹤

# 2. 暫存需要提交的文件

git add index.html src/utils.js

# 3. 提交版本

git commit -m "feat: 新增登錄驗證邏輯"

3. 查看狀態與歷史:隨時掌握代碼變化

開發中需要頻繁確認“當前修改了什麼”“之前提交過什麼”,這兩個命令是關鍵。

| 命令 | 作用 | 常用場景 |

| `git status` | 查看工作區/暫存區狀態 | 寫代碼間隙,確認哪些文件沒暫存/沒提交 |

| `git status -s` | 簡潔版狀態(適合熟練後用) | 快速掃一眼修改文件 |

| `git log` | 查看提交歷史(按時間倒序) | 查之前的提交記錄,找某個功能是誰寫的 |

| `git log --oneline` | 單行精簡歷史(最常用) | 快速看版本迭代,找某個提交的 ID |

| `git log -3` | 顯示最近 3 條提交 | 剛提交完,確認提交是否成功 |

| `git diff` | 查看工作區與暫存區的差異 | 沒 `add` 之前,確認修改的具體內容 |

| `git diff --cached` | 查看暫存區與倉庫的差異 | 已 `add` 但沒 `commit`,確認暫存的內容 |

示例: 

# 查看最近5條精簡歷史

git log --oneline -5

# 查看 index.html 未暫存的修改

git diff index.html

三、分支管理:團隊協作的“隔離神器”

分支的核心作用是“隔離開發環境”:每個功能/bug修復單獨開分支,開發完再合併到主分支,互不干擾。

1. 分支基礎操作:創建、切換、刪除

| 命令 | 作用 | 示例 |

| `git branch` | 查看本地所有分支(當前分支前帶 `*`)| 確認當前在哪個分支,有哪些分支 |

| `git switch -c <分支名>` | 創建並切換到新分支(Git 2.23+ 推薦) | `git switch -c feature/login`(創建“登錄功能”分支) |

| `git switch <分支名>` | 切換到已存在的分支 | `git switch main`(切回主分支) |

| `git branch -d <分支名>` | 刪除已合併的分支(安全) | `git branch -d feature/login`(功能合併後刪除分支) |

| `git branch -D <分支名>` | 強制刪除未合併的分支(謹慎) | 分支廢棄不用時,強制刪除 |

> 老版本 Git 用 `git checkout` 切換分支(如 `git checkout -b feature/login`),但 `git switch` 更直觀,推薦優先用。

2. 分支合併與衝突解決:協作的核心

開發完成後,需要把分支的代碼“合併”到主分支(如 `main`)。合併時最常見的問題是“衝突”——比如兩個分支改了同一文件的同一行代碼,Git 無法自動判斷保留哪個,需要手動解決。

(1)常規合併流程

# 1. 切換到主分支

git switch main

# 2. 拉取主分支最新代碼(避免合併時衝突)

git pull origin main

# 3. 合併功能分支到主分支

git merge feature/login

(2)衝突解決步驟(關鍵)

如果合併時出現 `Automatic merge failed; fix conflicts and then commit the result`,説明有衝突。按以下步驟解決:

1. 查衝突文件:執行 `git status`,標有 `both modified` 的文件就是衝突文件; 

2. 改衝突內容:打開衝突文件,找到衝突標記:

   <<<<<<< HEAD  # 當前分支(主分支)的內容

   按鈕顏色:藍色

   =======  # 分隔符

   按鈕顏色:紅色

   >>>>>>> feature/login  # 待合併分支(登錄功能分支)的內容

   手動刪除衝突標記,保留正確內容(比如保留“藍色”); 

3. 標記衝突已解決:衝突文件改完後,執行 `git add <衝突文件>`; 

4. 完成合並:執行 `git commit`(無需寫 `-m`,Git 會自動生成合並説明)。

> 提示:衝突解決的核心是“和團隊溝通清楚保留哪部分代碼”,不要自己擅自決定。

四、遠程倉庫:團隊協作的“代碼共享中心”

本地倉庫只能自己用,團隊協作需要一個“中央倉庫”(如 GitHub、GitLab、Gitee),大家把代碼推到遠程,再從遠程拉取別人的代碼。

1. 關聯遠程倉庫(首次操作)

如果是本地新建的項目,需要先關聯遠程倉庫;如果是 `git clone` 的項目,默認已關聯(遠程名默認叫 `origin`)。

# 關聯遠程倉庫(遠程名用 origin,地址替換成你的倉庫地址)

git remote add origin https://github.com/zhangsan/my-blog.git

# 查看已關聯的遠程倉庫(驗證是否成功)

git remote -v

2. 拉取與推送:代碼同步的核心

| 命令 | 作用 | 示例 |

| `git pull <遠程名> <分支名>` | 拉取遠程分支最新代碼,合併到本地當前分支 | `git pull origin main`(拉取遠程主分支代碼) |

| `git push <遠程名> <分支名>` | 把本地分支代碼推送到遠程倉庫 | 首次推送:`git push -u origin feature/login`(`-u` 關聯遠程分支,後續可直接 `git push`)<br>常規推送:`git push origin main` |

| `git fetch <遠程名>` | 拉取遠程最新信息(不合並,適合先看差異) | `git fetch origin`(拉取遠程所有分支更新,再用 `git diff origin/main` 看差異) |

示例:團隊協作流程

# 1. 每天上班先拉取遠程主分支最新代碼,避免衝突

git switch main

git pull origin main

# 2. 切換到自己的功能分支開發

git switch feature/payment

# 3. 開發完提交本地版本

git commit -am "feat: 新增支付寶支付功能"

# 4. 推送到遠程功能分支,供團隊 review

git push -u origin feature/payment

3. 刪除遠程分支

功能合併到主分支後,遠程的功能分支就可以刪除了:git push origin --delete feature/payment

五、救場指南:撤銷與回滾(避免“刪庫跑路”)

開發中難免犯錯:比如提交了錯誤代碼、刪了重要文件——別慌,Git 有多種“後悔藥”,關鍵是找對場景用對命令。

| 錯誤場景 | 解決方案 | 命令示例 |

| 工作區修改錯了,沒 `add` | 放棄工作區修改,恢復到最近一次 `commit`/`add` 的狀態 | `git checkout -- index.html`(注意:`--` 不能少,避免和分支名混淆) |

| 不小心 `add` 了錯誤文件到暫存區 | 把文件從暫存區移除,保留工作區修改 | `git reset HEAD index.html` |

| 提交了錯誤版本(已 `commit`,未推送到遠程) | 方案1:`git reset --hard <提交ID>`(徹底刪除後續提交,謹慎用)<br>方案2:`git revert <提交ID>`(創建反向提交抵消錯誤,推薦,保留歷史) | 1. 先查提交ID:`git log --oneline`<br>2. 回滾:`git revert a1b2c3d`(`a1b2c3d` 是錯誤提交的ID) |

| 提交了錯誤版本(已推送到遠程) | 只能用 `git revert` 創建反向提交,再推送到遠程(避免修改遠程歷史,影響團隊) | `git revert a1b2c3d && git push origin main` |

> 警告:`git reset --hard` 會徹底刪除未提交的修改和後續提交記錄,執行前一定要用 `git stash` 暫存重要修改(`git stash` 可以把工作區修改暫存起來,後續用 `git stash pop` 恢復)。

六、版本發佈:標籤管理(Tag)

當項目達到某個里程碑(如正式上線 v1.0),需要用“標籤”標記這個版本,方便後續回溯(比如線上出問題時,快速切回 v1.0 版本)。

| 命令 | 作用 | 示例 |

| `git tag -a <標籤名> -m "標籤説明"` | 創建帶説明的標籤(推薦) | `git tag -a v1.0 -m "正式發佈v1.0版本"` |

| `git tag` | 查看所有標籤 | 確認已創建的標籤 |

| `git push origin <標籤名>` | 推送標籤到遠程倉庫 | `git push origin v1.0` |

| `git push origin --tags` | 推送所有未推送的標籤 | 一次推送多個標籤 |

| `git tag -d <標籤名>` | 刪除本地標籤 | `git tag -d v1.0` |

| `git push origin --delete <標籤名>` | 刪除遠程標籤 | `git push origin --delete v1.0` |

七、實戰場景:3個高頻案例直接套用

案例1:新建項目並推送到遠程

# 1. 本地新建項目並初始化

mkdir my-project && cd my-project

git init

# 2. 創建 README 文件並提交

echo "# 我的項目" > README.md

git add README.md

git commit -m "init: 初始化項目,添加README"

# 3. 關聯遠程倉庫(替換成你的倉庫地址)

git remote add origin https://github.com/zhangsan/my-project.git

# 4. 推送到遠程主分支

git push -u origin main

案例2:開發新功能(團隊協作)

# 1. 拉取遠程主分支最新代碼

git switch main

git pull origin main

# 2. 創建功能分支

git switch -c feature/user-profile

# 3. 開發功能(寫代碼),提交本地版本

git add .

git commit -m "feat: 新增用户個人資料頁面"

# 4. 推送到遠程功能分支,準備提PR/MR

git push -u origin feature/user-profile

案例3:修復線上bug

# 1. 切到主分支,拉取最新代碼

git switch main

git pull origin main

# 2. 創建bug修復分支(分支名建議帶bug編號)

git switch -c bugfix/123-login-error

# 3. 修復bug後提交

git commit -am "fix: 修復登錄時輸入空格導致失敗的問題"

# 4. 推送到遠程,合併到主分支後上線

git push -u origin bugfix/123-login-error

總結:Git 核心邏輯一句話總結

Git 的所有操作,本質是圍繞“工作區→暫存區→本地倉庫→遠程倉庫”的數據流,而分支是“隔離數據流的容器”,撤銷回滾是“修正數據流的工具”。

不必死記所有命令,記住“先查狀態(`git status`),再做操作”——遇到問題時,`git --help <命令>` 能查看官方文檔(如 `git help merge`),比任何筆記都靠譜。