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

简介: 教程来源 https://tmywi.cn Git高级技巧助你高效协作:储藏(stash)暂存未完成修改;交互式rebase优雅整理提交历史;cherry-pick跨分支复用关键提交;bisect二分定位Bug根源;submodule管理外部依赖;hooks自动化质量管控。

六、高级技巧:让 Git 效率翻倍

6.1 储藏(Stash)
临时保存工作区的修改,去处理更紧急的事情。

# 保存当前修改
git stash
git stash save "正在开发支付功能"  # 带描述

# 查看储藏列表
git stash list
# stash@{0}: On main: 正在开发支付功能
# stash@{1}: On main: 修复Bug

# 恢复最近的储藏(并保留)
git stash apply

# 恢复并删除
git stash pop

# 恢复指定的储藏
git stash apply stash@{1}

# 删除指定的储藏
git stash drop stash@{1}

# 清空所有储藏
git stash clear

# 创建分支从储藏
git stash branch new-feature

6.2 交互式 Rebase
交互式 rebase 可以在提交历史进入远程仓库前,对本地提交进行整理。

# 对最近3次提交进行操作
git rebase -i HEAD~3

交互式界面中可用的命令:
image.png
实战示例:合并多个提交

# 原始历史
a1b2c3d 添加支付功能(第三步)
e4f5g6h 添加支付功能(第二步)
i7j8k9l 添加支付功能(第一步)

# 执行 git rebase -i HEAD~3
# 编辑界面中修改:
pick i7j8k9l 添加支付功能(第一步)
squash e4f5g6h 添加支付功能(第二步)
squash a1b2c3d 添加支付功能(第三步)

# 保存后会弹出新界面让你编辑最终的提交信息
# 最终历史:
x9y8z7w 添加支付功能

6.3 Cherry-pick
选择性地将其他分支的某个提交应用到当前分支。

# 复制一个提交到当前分支
git cherry-pick <commit-hash>

# 复制多个提交
git cherry-pick <commit1> <commit2> <commit3>

# 复制一段连续的提交
git cherry-pick <start>..<end>

# 编辑提交信息
git cherry-pick -e <commit-hash>

# 不自动提交(方便调整)
git cherry-pick -n <commit-hash>

使用场景:

将修复 Bug 的提交应用到多个分支

从开发分支提取特定功能到主分支

恢复误删的提交

6.4 Bisect:二分查找 Bug
当你知道某个 Bug 存在,但不确定是哪个提交引入时,用 git bisect 二分查找。

# 开始二分查找
git bisect start

# 标记当前版本有问题
git bisect bad

# 标记已知的好版本
git bisect good <commit-hash>

# Git 会自动切换到一个中间版本,测试后标记
git bisect bad   # 如果当前版本有问题
git bisect good  # 如果当前版本正常

# 重复直到找到引入 Bug 的提交
# 找到后退出
git bisect reset

6.5 子模块(Submodule)
在一个 Git 仓库中引入另一个 Git 仓库。

# 添加子模块
git submodule add https://github.com/example/lib.git libs/example-lib

# 克隆包含子模块的仓库
git clone --recursive https://github.com/example/main-repo.git

# 更新子模块
git submodule update --init --recursive

# 更新子模块到最新
cd libs/example-lib
git pull origin main
cd ..
git add libs/example-lib
git commit -m "更新子模块"

# 查看子模块状态
git submodule status

6.6 钩子(Hooks)
Git 钩子是在特定事件发生时自动执行的脚本。

# 钩子存放在 .git/hooks/ 目录下
ls .git/hooks/
# pre-commit.sample
# commit-msg.sample
# post-commit.sample
# ...

# 创建 pre-commit 钩子(提交前运行测试)
cat > .git/hooks/pre-commit << 'EOF'
#!/bin/sh
npm run test
if [ $? -ne 0 ]; then
    echo "测试失败,提交被阻止"
    exit 1
fi
EOF

chmod +x .git/hooks/pre-commit

常用钩子:
image.png
来源:
https://hllft.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