初级程序员必备的十大技能之 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/

相关文章
|
16天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23518 12
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
3天前
|
Shell API 开发工具
Claude Code 快速上手指南(新手友好版)
AI编程工具卷疯啦!Claude Code凭借任务驱动+终端原生的特性,成了开发者的效率搭子。本文从安装、登录、切换国产模型到常用命令,手把手带新手快速上手,全程避坑,30分钟独立用起来。
1201 7
|
5天前
|
人工智能 BI 持续交付
Claude Code 深度适配 DeepSeek V4-Pro 实测:全场景通关与真实体验报告
在 AI 编程工具日趋主流的今天,Claude Code 凭借强大的任务执行、工具调用与工程化能力,成为开发者与自动化运维的核心效率工具。但随着原生模型账号稳定性问题频发,寻找一套兼容、稳定、能力在线的替代方案变得尤为重要。DeepSeek V4-Pro 作为新一代高性能大模型,提供了完整兼容 Claude 协议的 API 接口,只需简单配置即可无缝驱动 Claude Code,且在任务执行、工具调用、复杂流程处理上表现极为稳定。
1364 3
|
9天前
|
人工智能 缓存 Shell
Claude Code 全攻略:命令大全 + 实战工作流(完整版)
Claude Code 是一款运行在终端环境下的 AI 编码助手,能够直接在项目目录中理解代码结构、编辑文件、执行命令、执行开发计划,并支持持久化记忆、上下文压缩、后台任务、多模型切换等专业能力。对于日常开发、项目维护、快速重构、代码审查等场景,它可以大幅减少手动操作、提升编码效率。本文从常用命令、界面模式、核心指令、记忆机制、图片处理、进阶工作流等维度完整说明,帮助开发者快速上手并稳定使用。
2508 4
|
3天前
|
人工智能 JSON BI
DeepSeek V4-Pro 接入 Claude Code 完全实战:体验、测试与关键避坑指南
Claude Code 作为当前主流的 AI 编程辅助工具,凭借强大的代码理解、工程执行与自动化能力深受开发者喜爱,但原生模型的使用成本相对较高。为了在保持能力的同时进一步降低开销,不少开发者开始寻找兼容度高、价格更友好的替代模型。DeepSeek V4 系列的发布带来了新的选择,该系列包含 V4-Pro 与 V4-Flash 两款模型,并提供了与 Anthropic 完全兼容的 API 接口,理论上只需简单修改配置,即可让 Claude Code 无缝切换为 DeepSeek 引擎。
921 0
|
20天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
6024 22
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
21天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
7272 18