文章目录
Git 全面操作指南(日常开发版)
一、Git 核心概念(理解原理才能用好工具)
-
仓库(Repository)
- 本地仓库:存在本机的代码版本库(
.git
目录)。 - 远程仓库:托管在 GitHub/GitLab 等平台的代码库(如
origin
)。
- 本地仓库:存在本机的代码版本库(
-
三大区域
- 工作区:你直接编辑的文件(未提交的修改)。
- 暂存区(Staging Area):通过
git add
暂存的文件(准备提交)。 - 版本库(Repository):通过
git commit
提交的永久快照。
-
分支(Branch)
- 每个分支代表独立的开发线,默认主分支为
main
或master
。
- 每个分支代表独立的开发线,默认主分支为
二、高频操作详解(附场景说明)
1. 初始化与基础配置
# 初始化本地仓库(在项目根目录执行)
git init
# 全局配置用户名和邮箱(首次使用必做)
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
# 查看当前配置
git config --list
场景:新项目初始化或首次安装 Git 后配置身份。
2. 提交代码(日常开发核心)
# 查看当前文件状态(红字=未跟踪,绿字=已暂存)
git status
# 添加文件到暂存区(可指定文件或目录)
git add index.html # 添加单个文件
git add src/ # 添加整个目录
git add . # 添加所有修改(慎用,避免提交临时文件)
# 提交到版本库(必须写清晰的提交信息)
git commit -m "feat: 新增用户登录页面"
# 修改上一次提交信息(未推送时)
git commit --amend
场景:开发完成一个功能点后提交代码。
注意:提交信息建议遵循 Conventional Commits 规范(如 feat:
, fix:
, docs:
)。
3. 分支管理(多人协作必备)
# 查看所有分支(当前分支前有 * 号)
git branch
# 创建并切换到新分支(推荐)
git switch -c feature/user-profile
# 切换到已有分支
git switch main
# 合并分支到当前分支(如合并 feature 到 main)
git merge feature/user-profile
# 删除本地分支(已合并的分支)
git branch -d feature/user-profile
# 强制删除未合并的分支(慎用)
git branch -D experiment
场景:
- 开发新功能时创建独立分支。
- 修复 Bug 时从主分支创建
bugfix/xxx
分支。 - 合并前确保主分支最新(先
git pull
)。
4. 远程仓库协作(团队开发核心)
# 克隆远程仓库到本地
git clone https://github.com/yourname/project.git
# 查看远程仓库信息
git remote -v
# 拉取远程分支最新代码(推荐先拉再推)
git pull origin main
# 推送本地分支到远程
git push origin feature/user-profile
# 删除远程分支
git push origin --delete feature/old
场景:
- 从公司 GitLab 克隆项目开始开发。
- 每天上班先
git pull
避免代码冲突。 - 开发完成后推送分支并发起 Merge Request。
5. 撤销与回退(紧急救援)
# 撤销工作区的修改(未 add 的文件)
git restore index.html
# 撤销暂存区的修改(已 add 但未 commit)
git restore --staged index.html
# 回退到某次提交(彻底丢弃后续修改)
git reset --hard a1b2c3d
# 临时保存未提交的修改(切换分支前)
git stash
git stash pop # 恢复最近一次储藏
场景:
- 写错代码想还原到上次提交状态。
- 误添加文件到暂存区需取消。
- 紧急修复 Bug 需切换分支但当前代码未完成。
6. 解决冲突(团队协作必会)
# 拉取代码时出现冲突
git pull origin main
# 手动编辑文件,解决冲突标记(<<<<<<< 和 >>>>>>>)
# 冲突标记示例:
# <<<<<<< HEAD
# 本地修改
# =======
# 远程修改
# >>>>>>> a1b2c3d
# 解决后标记为已解决
git add resolved-file.txt
git commit -m "fix: 解决合并冲突"
场景:多人修改同一文件后,Git 无法自动合并,需手动处理。
三、完整工作流程案例
案例1:开发新功能
# 1. 从主分支创建新分支
git switch -c feature/search
# 2. 开发代码并测试...
git add search.js
git commit -m "feat: 添加商品搜索功能"
# 3. 推送分支到远程
git push origin feature/search
# 4. 在 GitHub 创建 Pull Request(代码审查)
# 5. 审查通过后合并到 main
git switch main
git pull origin main
git merge feature/search
git push origin main
案例2:修复线上 Bug
# 1. 从主分支创建热修复分支
git switch -c hotfix/login-error
# 2. 修复并提交
git add login.php
git commit -m "fix: 解决登录超时问题"
# 3. 测试后合并到 main 和开发分支
git switch main
git merge hotfix/login-error
git push origin main
git switch dev
git merge hotfix/login-error
git push origin dev
四、最佳实践与避坑指南
-
提交规范
- 使用
feat:
,fix:
,docs:
,style:
,refactor:
,test:
,chore:
前缀。 - 示例:
git commit -m "feat: 新增购物车页面"
- 使用
-
分支命名
- 功能分支:
feature/功能名称
- Bug 修复:
bugfix/问题描述
- 热修复:
hotfix/问题描述
- 功能分支:
-
每日工作流程
git pull origin main # 上班先拉最新代码 git switch -c feature/xx # 创建新分支开发 ... # 写代码、测试 git add . # 添加修改 git commit -m "..." # 提交 git push origin feature/xx # 下班前推送
-
必须避免的操作
- 禁止直接在主分支开发(应创建新分支)。
- 禁止强制推送 (
git push -f
) 到公共分支。 - 提交前检查
.gitignore
,避免提交敏感信息(如密码、node_modules
)。
五、常用命令速查表
操作场景 | 命令 |
---|---|
查看状态 | git status |
查看提交历史 | git log --oneline --graph |
比较差异 | git diff |
回退到某次提交 | git reset --hard commit_id |
查看远程仓库 | git remote -v |
拉取并合并远程代码 | git pull origin main --rebase |
打版本标签 | git tag -a v1.0.0 -m "Release" |
清理无效远程分支记录 | git fetch --prune |
掌握以上内容,你已经能应对 90% 的日常开发场景。遇到问题时,记住:
- 先用
git status
查看状态 - 善用
git restore
和git reset
撤销操作 - 复杂操作前备份代码(创建临时分支或
git stash
)