初级程序员必备的十大技能之 Git 版本控制(六)

简介: 教程来源 http://vrhyh.cn/ 本节详解 Git 核心实践:`.gitignore` 规则编写与常用模板;Git Flow、GitHub/GitLab 三种协作工作流;规范提交信息(Conventional Commits);分支恢复、历史修改、大文件清理等高频问题解决方案;附命令速查与知识地图。

七、.gitignore:不要什么都提交

7.1 基本语法

# 注释
*.log          # 忽略所有 .log 文件
/node_modules/ # 忽略整个目录
build/         # 忽略 build 目录
!build/package.json  # 不忽略特定的文件
*.tmp         # 忽略所有 .tmp 文件
temp-*        # 忽略 temp- 开头的文件
[0-9].txt     # 忽略 0.txt,1.txt...
**/temp       # 忽略任意层级下的 temp

# 典型的 .gitignore(Node.js 项目)
/node_modules/
/dist/
/build/
.env
.env.local
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.DS_Store
coverage/
.nyc_output/
.idea/
.vscode/
*.swp
*.swo

7.2 常用模板

# Python
__pycache__/
*.py[cod]
*.so
.Python
env/
venv/
.env
.venv
*.egg-info/
dist/
build/

# Java
*.class
*.jar
target/
.idea/
*.iml
.settings/
.project
.classpath

# 通用
.DS_Store
Thumbs.db
*.tmp
*.swp
*.swo
*~

7.3 检查忽略规则

# 查看为什么某个文件被忽略
git check-ignore -v node_modules/package.json

# 查看所有被忽略的文件
git status --ignored

# 强制添加被忽略的文件
git add -f config.local.js

八、Git 工作流:团队协作的最佳实践

8.1 Git Flow(经典工作流)

main (生产分支)          o-----------o-----------o
                        |           |           |
develop (开发分支)   o---o---o---o---o---o---o---o
                    |       |       |       |
feature/1        o---o       |       |       |
feature/2                o---o       |       |
hotfix/1                         o---o       |
release/1                               o---o

分支类型:

main:生产环境代码,只接受 merge

develop:集成分支,所有功能合并到这里

feature/*:新功能开发分支

release/*:发布准备分支

hotfix/*:紧急修复分支

8.2 GitHub Flow(简化工作流)
更适合持续部署的项目:

main 分支始终是可部署状态

新功能从 main 创建分支

通过 Pull Request 合并回 main

8.3 GitLab Flow(环境分支)

main (开发) → staging (预发布) → production (生产)

8.4 Pull Request 流程

# 1. 创建功能分支
git checkout -b feature/user-profile

# 2. 开发并提交
git add .
git commit -m "添加用户资料页面"

# 3. 推送到远程
git push -u origin feature/user-profile

# 4. 在 GitHub/GitLab 上创建 Pull Request

# 5. 收到 Code Review 意见后修改
git add .
git commit -m "根据 review 意见修改"
git push

# 6. PR 被合并后,删除本地分支
git checkout main
git pull
git branch -d feature/user-profile

九、常见问题与解决方案

9.1 提交信息规范

# 格式:<type>(<scope>): <subject>

# 示例
feat(auth): 添加双因素认证
fix(login): 修复密码重置链接过期问题
docs(readme): 更新安装说明
style(button): 调整按钮内边距
refactor(api): 重构用户验证逻辑
test(unit): 添加支付模块测试
chore(deps): 升级 lodash 到 4.17.21

# Type 类型
# feat: 新功能
# fix: Bug 修复
# docs: 文档更新
# style: 代码格式(不影响功能)
# refactor: 重构(不是新功能也不是修复)
# test: 测试相关
# chore: 构建过程或辅助工具变动

9.2 恢复误删的分支

# 1. 查看 reflog(所有 HEAD 移动记录)
git reflog

# 2. 找到删除分支前的提交 hash
# a1b2c3d HEAD@{5}: checkout: moving from feature to main

# 3. 恢复分支
git checkout -b recovered-branch a1b2c3d

9.3 修改历史中的提交信息

# 修改最近一次提交
git commit --amend -m "新的提交信息"

# 修改历史中的某个提交
git rebase -i HEAD~5
# 将需要修改的提交前的 pick 改为 reword
# 保存后会自动弹出编辑器让你修改信息

9.4 拆分一个提交成多个

# 1. 开始交互式 rebase
git rebase -i HEAD~1

# 2. 将 pick 改为 edit

# 3. 重置该提交
git reset HEAD^

# 4. 分别提交
git add file1.js
git commit -m "第一部分:添加功能A"
git add file2.js
git commit -m "第二部分:添加功能B"

# 5. 继续 rebase
git rebase --continue

9.5 清理仓库大小

# 查看大文件
git rev-list --objects --all | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | awk '/^blob/ {print substr($0,6)}' | sort --numeric-sort --key=2 | tail -10

# 从历史中删除大文件
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch path/to/large-file.zip" --prune-empty --tag-name-filter cat -- --all

# 强制推送并清理
git push origin --force --all
git reflog expire --expire=now --all
git gc --aggressive --prune=now

十、常用命令速查表

10.1 日常操作
image.png
10.2 分支操作
image.png
10.3 撤销操作
image.png
10.4 远程操作
image.png
附:Git 知识地图

Git
├── 基础概念
│   ├── 三大区域(工作区、暂存区、仓库)
│   ├── 三种状态(modified、staged、committed)
│   └── 数据结构(blob、tree、commit)
├── 日常操作
│   ├── add、commit、push、pull
│   ├── status、diff、log
│   └── restore、reset、revert
├── 分支管理
│   ├── branch、checkout、merge
│   ├── rebase、cherry-pick
│   └── stash
├── 远程协作
│   ├── remote、clone、fetch
│   ├── push、pull
│   └── 冲突解决
└── 高级技巧
    ├── interactive rebase
    ├── bisect
    ├── reflog
    └── hooks

来源:
http://bgnno.cn/

相关文章
|
5月前
|
人工智能 文字识别 运维
文档智能处理与ReAct推理链:RAG系统的两个"隐形引擎"
本文深入解析RAG系统中两大“隐形引擎”:文档智能处理(含多格式解析、语义分片、QA抽取)与ReAct推理链(支持多轮思考-行动-观察)。二者协同提升知识库质量与AI推理能力,是决定RAG效果的关键底层能力。
|
5月前
|
存储 程序员 Linux
初级程序员必备的十大技能之 Git 版本控制(一)
教程来源 http://xcfsr.cn Git是程序员的“后悔药”与“时光机”:可随时回退错误修改、隔离并行开发、一键恢复稳定版本。作为分布式版本控制系统,它本地全量存储、离线可用、安全可靠,支撑全球90%以上团队高效协作。
|
6月前
|
人工智能 自然语言处理 安全
【新人快速上手使用】小白也能上手的 OpenClaw 2.6.6 安装教程(技术分享)
OpenClaw(小龙虾)是2026年热门开源「数字员工」,支持Windows一键部署(5分钟搞定),本地运行、零代码、全自动办公。无需配置环境,可整理文件、发邮件、浏览器自动化等,隐私安全,小白友好。
|
6月前
|
SQL 关系型数据库 MySQL
EXPLAIN 执行计划:一眼看穿你的SQL慢在哪
数据库小学妹带你轻松掌握SQL性能诊断!通过EXPLAIN查看执行计划,精准识别索引失效、全表扫描(ALL)、key为NULL等瓶颈。聚焦type、key、rows等6个关键字段,结合实战案例与避坑指南(如函数滥用、最左前缀破坏),让优化有的放矢。学完即用,告别盲目调优!
|
6月前
|
算法 数据挖掘 语音技术
基于隐马尔可夫模型(HMM)的语音识别实现
基于隐马尔可夫模型(HMM)的语音识别实现,结合MATLAB平台,涵盖语音预处理、特征提取、模型训练与识别全流程
|
5月前
|
供应链 数据可视化 搜索推荐
低代码平台适合哪些企业?从规模到场景的全面解析
在数字化转型加速推进的当下,低代码开发平台正从 "锦上添花的辅助工具" 演进为企业数字化转型的重要支撑平台。那么,低代码平台究竟适合哪些企业?不同规模、不同行业的企业又该如何选择适合自己的低代码平台?
|
5月前
|
运维 Linux 程序员
初级程序员必备的十大技能之基础 Linux 命令(二)
教程来源 http://vrhyh.cn/ 本节系统介绍Linux文件内容查看与处理核心命令:`cat`快速显示/合并文件;`less`/`more`分页浏览;`head`/`tail`查看首尾及实时日志;`grep`精准搜索与过滤;`sed`流式文本替换删除;`awk`结构化字段处理;`vim`高效终端编辑。覆盖日常运维、日志分析与脚本开发必备技能。
|
5月前
|
程序员 开发工具 git
初级程序员必备的十大技能之 Git 版本控制(四)
教程来源 http://fndvx.cn 远程仓库是团队协作核心,涵盖添加/查看/修改/删除远程源、推送拉取代码、追踪分支及处理冲突等关键操作,支撑高效协同开发。
|
5月前
|
SQL 运维 安全
初级程序员必备的十大技能之数据库基础(四)
教程来源 http://xgmoi.cn/ 本节聚焦MySQL性能优化与安全运维:通过慢查询日志定位瓶颈,结合SQL写法优化(如避免SELECT*、善用EXPLAIN)、索引与分区设计提升查询效率;同时涵盖权限管控、mysqldump备份恢复及自动化策略,兼顾性能与可靠性。
|
5月前
|
SQL 程序员 数据库
初级程序员必备的十大技能之数据库基础(三)
教程来源 http://ltglu.cn/ 本文详解数据库索引优化与事务机制:索引类比书目录,B+树大幅降低IO;详解最左前缀、函数/类型转换等索引失效场景及EXPLAIN分析法;事务部分涵盖ACID、四大隔离级别(解决脏读/不可重复读/幻读)、行锁/乐观锁及秒杀防超卖实战。