Git变基同步助手Skill git-rebase-sync

Git变基同步助手是一个用于安全、可控地将Git功能分支通过rebase操作同步到最新基础分支的工具。它提供完整的冲突解决流程、操作前确认机制、本地备份和安全的强制推送(force-with-lease)。关键词:Git变基,分支同步,冲突解决,Git工作流,版本控制,安全推送,DevOps工具。

DevOps 0 次安装 0 次浏览 更新于 2/23/2026

name: git-rebase-sync description: 通过git rebase将功能分支同步到最新的origin基础分支,包含安全防护、冲突解决和安全的强制推送。 metadata: short-description: 变基分支同步

git-rebase-sync

当你需要通过git rebase将功能分支同步到最新的origin/{base_branch}时使用此技能,包括在意图不明确时通过明确澄清问题进行冲突解决

目标

  • 将当前分支变基到指定的基础分支(通常是仓库的默认分支,如devmain)。
  • 谨慎解决冲突,不进行猜测。
  • 保持安全防护:备份引用、在执行历史重写命令前确认、安全推送。

硬性规则

  • 不要创建或切换到其他功能分支。除非我明确要求,否则在当前分支上操作。
  • 在执行任何历史重写命令(git rebase ...git push --force*)之前,打印你将运行的确切命令并等待我的确认。
  • 在开始变基之前创建本地备份引用(首选带注释的标签)。除非我明确要求,否则不要推送备份引用。
  • 优先使用git push --force-with-lease,绝不使用普通的--force
  • 如果正确的冲突解决方案不明确,请停止并提出有针对性的问题。不要臆测产品行为。

工作流程

1) 识别基础分支和当前分支

  • 确定当前分支:
    • git branch --show-current
  • 确定你将变基到的基础分支:
    • 如果未提供,使用GitHub默认分支:
      • gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name'
  • 获取最新内容:
    • git fetch origin

2) 飞行前安全检查

  • 确保工作树干净且没有进行中的操作:
    • git status
  • 如果git status显示有进行中的合并/变基/拣选操作,请停止并询问如何处理(中止或继续)。

3) 创建本地备份引用(不推送)

  • 在当前HEAD处创建带注释的标签:
    • git tag -a {branch_name}-rebase-backup-$(date +%Y%m%d-%H%M%S) -m "pre-rebase backup" HEAD
  • 将标签名称记录为{backup_ref}以便恢复。

4) 选择变基模式(普通模式与保留合并)

  • 检查分支是否包含合并提交:
    • git rev-list --count --merges origin/{base_branch}..HEAD
  • 如果存在合并提交,询问是保留它们(--rebase-merges)还是扁平化它们(普通变基)。

5) 运行变基(需要确认)

  • 打印你打算运行的确切命令,然后等待确认:
    • 典型命令:
      • git rebase origin/{base_branch}
    • 保留合并:
      • git rebase --rebase-merges origin/{base_branch}

6) 冲突处理循环

当发生冲突时:

  1. 收集上下文:
    • git status
    • 识别冲突文件(从状态输出中)。
  2. 对于每个冲突文件:
    • 打开文件并理解周围的代码和意图。
    • 优先采用最小化、机械化的冲突解决方案:
      • 除非功能分支有意覆盖,否则保留上游更改。
      • 在适当时重新运行生成器(锁文件、代码生成)而不是手动编辑。
    • 如果意图不明确,提出一个有针对性的问题,例如:
      • “我们应该保留新的上游行为X,还是保留功能行为Y?”
      • “这个文件是生成的并且可以安全地重新生成,还是你想要手动解决?”
  3. 应用解决方案,然后仅暂存已解决的文件:
    • git add <file...>
  4. 继续:
    • git rebase --continue
  5. 如果你到达一个解决风险太大/太不明确的点:
    • 停止并询问;可以选择建议中止变基。

冲突期间有用的命令:

  • 检查当前冲突块:git diff
  • 查看正在重放的提交:git show
  • 如果需要回退:git rebase --abort(这是安全的,应优先于破坏性重置)

7) 变基后验证

  • 显示新的提交范围:
    • git log --oneline --decorate origin/{base_branch}..HEAD
  • 如果可用,运行适当的仓库检查(测试、类型检查、代码检查)。

8) 推送更新后的分支(需要确认)

  • 如果分支已存在于origin上,变基会重写历史,因此推送需要使用force-with-lease。
  • 打印确切命令并等待确认:
    • git push --force-with-lease origin HEAD:{branch_name}

恢复

  • 如果出现问题,使用{backup_ref}恢复变基前的状态。
  • 除非我在你显示确切命令后明确确认,否则不要运行破坏性命令(例如git reset --hard)。