Git 进阶实战指南:Cherry-pick、Worktree 与强制刷新

Share
Git 进阶实战指南:Cherry-pick、Worktree 与强制刷新
Photo by Yancy Min / Unsplash
在 Git 进阶操作中,掌握指令的效率与安全性是核心。以下总结了三个高效场景的实战技巧。

一、 Git Cherry-pick

批量提取与顺序准则当你需要将一个分支的多个提交(Commit)迁移到另一个分支时,可以使用 cherry-pick

1. 单条命令批量操作Cherry-pick 是可以将多个提交写在一条命令里的。你只需按 提交时间的先后顺序(从旧到新) 排列哈希值即可:

# 将三个提交按顺序一次性应用到当前分支
git cherry-pick <最早的提交ID> <中间的提交ID> <最近的提交ID>

2. 核心规则:正序执行在执行批量提取时,必须遵循代码生成的先后顺序(即 git log 中最底下的先写,最顶上的后写)。如果顺序颠倒,会导致后续的代码逻辑因找不到前置基础而产生大量的冲突。

3. 冲突处理若遇到 Conflict(冲突)

  1. 手动修复冲突文件。
  2. 执行 git add .
  3. 运行 git cherry-pick --continue 继续后续应用。
  4. 若想终止并回滚,运行 git cherry-pick --abort

二、 Git Worktree

多任务并行的隔离环境git worktree 允许在同一仓库中维护多个独立的工作目录,各目录绑定不同分支,共享 .git 库以节省空间。1. 多维度创建工作树

  • 基于本地已有分支git worktree add <新目录路径> <本地分支名>
  • 基于远程分支创建git worktree add <路径> origin/<远程分支名>。这将自动创建一个本地跟踪分支,非常适合快速测试远程代码。
  • 创建并检出新分支git worktree add -b <新分支名> <路径>
  • 基于特定基点(Tag/Commit)git worktree add -b <新分支名> <路径> <v1.0 或 Hash>

2. 关键规则与清理

  • 一分支一目录:同一个分支在同一时间只能被一个工作树检出。
  • 标准删除:使用 git worktree remove <路径>
  • 残留清理:若手动删除了文件夹,必须运行 git worktree prune 来同步 Git 的内部注册信息。

三、 Git 强制刷新

重置本地分支对齐远程当本地分支改动过多需要废弃,或远程历史已被强制重写时,可进行强制刷新。

1. 操作流程

  1. 拉取元数据git fetch origin(仅同步信息,不影响工作区)。
  2. 切换分支git switch <目标分支>
  3. 强制重置git reset --hard origin/<目标分支>

2. ⚠️ 风险提示

  • 数据擦除:该命令会永久清空当前分支所有未提交的改动及未推送(Unpushed)的本地提交。
  • 安全建议:在执行强制刷新前,建议先执行 git stash 暂存当前改动,或将本地分支重命名备份,以防后悔。

总结Cherry-pick 建议使用单行批量模式并严格遵守时间正序Worktree 可通过远程/本地关联实现高效并行;强制刷新则是最终的重置手段,务必先备份再操作

Read more

阿里云服务器科学上网架构升级指南

阿里云服务器科学上网架构升级指南

本手册旨在指导高级用户将其阿里云海外实例(以硅谷节点为例)的代理服务从传统 Shadowsocks (SS) 协议迁移至 VLESS-REALITY 架构。该方案的核心价值在于:通过模拟合法的 TLS 流量(如访问苹果或微软官网),在保障高速访问的同时,极大地降低了因协议特征被识别而导致 IP 被封锁的风险,从而保护服务器上并存的 Web 服务(如个人博客、简历等)不受牵连。 1. 协议演进:为何弃用 Shadowsocks 转向 VLESS-REALITY随着防火墙(GFW)对加密流量识别能力的提升,传统协议的生存空间已被严重压缩。下表从架构视角对比了两种方案的差异: 维度Shadowsocks (SS)VLESS-REALITY流量特征具有高度可识别的加密特征。无特征:完全模拟合法的 HTTPS 握手流量。安全性容易触发协议主动探测。防主动探测:通过目标网站(Dest)证书链校验。IP 封锁风险极高:一旦识别,IP 往往被阻断。

By 樊泽豪
【避坑指南】从 TinyDB 文件损坏,聊聊文件截断与磁盘刷盘的底层原理

【避坑指南】从 TinyDB 文件损坏,聊聊文件截断与磁盘刷盘的底层原理

在 Python 轻量级开发中,TinyDB 因其“零部署、文件即数据库、支持对象化查询”的特性,成为了存储配置信息、多租户元数据的神器。 但在高频写入或异常崩溃的场景下,你是否遇到过这样的诡异现象:导出的 JSON 文件末尾莫名其妙多出了几个 NULNUL(\x00)空字节,导致整个数据库报 JSON 无法解析的错误? 本文将带你还原这个经典的“文件空洞”Bug,并分享如何通过自定义存储类 MyJSONStorage 彻底解决它。 一、 现象还原:消失的尾巴与诡异的 NUL 在默认情况下,TinyDB 的 JSONStorage 是这样写入文件的: 1. seek(0) 指针回到文件开头。 2. write(json_data) 写入序列化后的 JSON 字符串。 3. truncate(

By 樊泽豪
搭建K3s集群,零成本打造生产级私有云

搭建K3s集群,零成本打造生产级私有云

简介 用一套经典的云原生“黄金组合”( K3s + Rancher + Longhorn + MetalLB),在本地裸机上构建具备调度、高可用存储、独立网络与可视化运维的完整私有云基础设施。打磨出媲美公有云的生产级 K8s 体验。 ┌──────────────────────────────────────────────────────────┐ │ Rancher Web 控制台 (管理与可视面) │ └──────────────────────────┬───────────────────────────────┘ │ 统一管控 ┌──────────────────────────▼───────────────────────────────┐ │ K3s 集群 (容器编排内核) │ ├──────────────────────────┬─────────────────────────────

By 樊泽豪
Docker常用操作

Docker常用操作

安装 Windows安装Docker到F盘(非系统盘) Start-Process -FilePath 'Docker_Desktop_Installer.exe' -Wait -ArgumentList "install --installation-dir=F:\DockerDesktop" 改变容器、镜像文件位置 以管理员权限启动Docker Desktop,Settings-Resources-Disk iamge location 配置dockerhub国内源 阿里云:容器镜像服务 (aliyun.com) 其他源 more /etc/docker/daemon.json 输入以下文件: { "registry-mirrors": [ "https://kk8u6omk.mirror.aliyuncs.com", "https:

By 樊泽豪