讲师中心 微信公众号
AI工具推荐 视频效率加速

智能 Git 操作助手

Polar Sponsor
爱发电 赞助
.NET 9.0

>-智能 Git 操作助手:安全提交、合并分支、检测冲突并提供处理建议、生成可视化报告。

Git 安全操作助手 (git-merge-assistant)

功能概述

Git 安全操作助手 (git-merge-assistant)是一项面向实际任务的技能,主要用于本 Skill 的核心目标是让 Git 操作 安全、可追溯、可视化;安全第一 :所有写操作(add/commit/merge/rebase/push)前必须 请求用户确认;

核心要点

  • 可追溯 :操作前保存 HEAD hash 和完整 diff,提供回退命令;
  • 可视化 :每次操作后生成操作报告(优先 HTML,降级为 Mar。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

使用与执行

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

Git 安全操作助手 (git-merge-assistant)

核心原则

本 Skill 的核心目标是让 Git 操作安全、可追溯、可视化。

  • 安全第一:所有写操作(add/commit/merge/rebase/push)前必须请求用户确认
  • 可追溯:操作前保存 HEAD hash 和完整 diff,提供回退命令
  • 可视化:每次操作后生成操作报告(优先 HTML,降级为 Markdown)
  • 最小提交:每次提交只包含一个逻辑变更
  • 不盲目自动化:复杂冲突(同一区域被双方修改)不自动解决,提示用户手动介入

支持的交互模式

模式 触发语 说明
commit "帮我提交代码"、"commit"、"提交" 提交工作区所有已跟踪文件的变更
commit-file "提交 src/main.py"、"只提交 docs/" 只提交指定文件/目录
merge "把 feature 合并到 master"、"merge" 分支合并(非 fast-forward 时需处理冲突)
rebase "变基 feature 到 master"、"rebase" 分支变基
push "推送代码"、"push" 推送当前分支到远程
all-in-one "提交并推送"、"commit and push" 先提交后推送

注意:push 模式仅在用户明确要求时执行。默认行为是只提交不上传。

10 步工作流

必须严格按照以下 10 个步骤顺序执行。

Step 0: 模式识别与用户确认

  1. 根据用户描述判断操作模式。如果不确定,列出可能模式让用户选择。
  2. 如果是合并/变基操作,确认源分支和目标分支。
  3. 如果是提交类操作,列出当前所有变更文件,说明哪些是目标文件、哪些会被暂存。
  4. 关键确认:在执行任何写操作之前,展示将要执行的命令并请求用户确认(y/n)。

Step 1: 预检查(Pre-flight Checks)

在执行操作前,检查以下风险并汇总警告:

# 检查是否有未保存的 IDE 临时文件
git ls-files --others --exclude-standard | grep -E ".(swp|swo|~)$" && echo "⚠️ 发现未保存的临时文件"

# 检查是否有大文件(>1MB)
find . -type f -size +1M ! -path "./.git/*" | head -5 && echo "⚠️ 存在大文件,建议使用 Git LFS"

# 检查敏感信息(密码、密钥等)
git diff --cached | grep -iE "password|secret|api_key|token" && echo "⚠️ 发现敏感关键词,请确认是否应提交"

汇总警告信息并询问用户是否继续。如果用户选择否,停止操作。

Step 2: 暂存非目标文件 + 保存快照

目标文件识别逻辑:

  • commit 模式:目标 = 所有已跟踪文件的变更(git diff --name-only 列出的文件),未跟踪文件不自动提交
  • commit-file 模式:用户明确指定的文件为目标,其余变更暂存
  • merge/rebase 模式:先处理工作区变更,防止脏工作区干扰

执行暂存(包含未跟踪文件):

git stash push -u -m "stash-before--"

保存快照:

# 记录当前 HEAD(供后续回退使用)
git rev-parse HEAD > .git-pre-operation-hash
# 保存工作区完整 diff(相对 HEAD)
git diff > .git-operation-snapshot.diff

记录操作前 HEAD hash,用于报告中生成回退命令。

Step 3: 拉取远程更新

git fetch origin
  • 对 merge/rebase:确保源分支和目标分支的远程状态最新
  • 对 push:先 fetch,检查是否落后于远程。若落后,提示先 pull/merge
  • 对 commit:检查是否有远程更新需要先合并

Step 4: 分析差异

执行以下命令并向用户呈现结果:

git status --short
git diff --stat
git diff

分析要点(告知用户):

  • 变更文件列表及类型(新增/修改/删除)
  • 变更行数统计
  • 是否有调试代码、临时注释等不应提交的内容
  • 如果是合并模式,分析两个分支的差异范围

Step 5: 执行操作(需用户确认)

展示将要执行的核心命令,请求用户确认。只有用户输入 y/yes 才执行。

示例:

即将执行:
  模式:commit
  命令:git add -u && git commit -m "<待编辑消息>"
  目标文件:src/main.py, src/utils.py
  将暂存非目标文件:tests/test_main.py
是否继续?(y/n)

不同模式的命令:

模式 命令
commit git add -u → git commit -m ""
commit-file git add → git commit -m ""
merge git checkout → git merge
rebase git checkout → git rebase
push git push origin
all-in-one 先执行 commit,成功后询问是否 push

只提交不上传:除非用户明确要求 push,否则不执行任何推送操作。

Step 6: 冲突检测与处理

执行 merge/rebase 后,检查冲突:

git diff --name-only --diff-filter=U   # 列出冲突文件

若无冲突:继续 Step 7。

若有冲突:

  1. 不自动解决。对每个冲突文件,显示冲突区块(<<<<<<< 标记的区域)。
  2. 生成冲突报告:
    • 冲突文件列表
    • 每个冲突文件中的冲突行号及双方内容
    • 建议:保留本地 / 保留远程 / 手动合并
  3. 备份原始冲突文件:
    mkdir -p .git-conflict-backup-$(date +%s)
    cp  .git-conflict-backup-*/
    
  4. 提示用户手动处理:
    检测到 2 个冲突文件。请手动编辑解决,完成后输入 'done' 继续。
    编辑命令:vim src/login.py
    
  5. 等待用户输入 done,然后验证所有冲突标记已解决(无 <<<<<<< 残留)。
  6. 执行 git add 标记已解决。
  7. 对于 merge 模式,继续 git commit(生成默认合并消息);对于 rebase,执行 git rebase --continue。

Step 7: 提交消息生成与用户确认

这是用户特别要求的步骤 — 不直接提交,先生成消息给用户确认。

  1. 根据变更文件列表和 diff 统计,生成一个默认消息模板:

    • 单文件变更:[] 修改了 <文件名>
    • 多文件变更:[] 更新了 <模块名> 相关功能
  2. 展示消息给用户审查:

    请审阅提交消息(第一行不超过 72 字符):
    ————————————————————————————————
    [fix] 修复登录验证逻辑
    
    详细说明(可选):
    - 修复了空密码导致的崩溃
    
    ————————————————————————————————
    输入 'y' 确认提交,输入 'n' 取消提交,或直接输入新的提交消息:
    
  3. 用户选择:

    • y/yes → 执行 git commit -m "<消息>"
    • n/no → 撤回提交(不执行 commit,恢复到操作前状态),告知用户已取消
    • 输入其他内容 → 使用用户输入的内容作为提交消息,然后执行 commit
  4. 提交消息推荐格式(不强求,作为建议):

    (): <简短描述>
    
    <详细说明(可选)>
    
type 说明
feat 新功能
fix 修复
refactor 重构
docs 文档
style 格式调整
chore 杂项
merge 合并分支

Step 8: 恢复暂存文件

如果 Step 2 中暂存了非目标文件,现在恢复:

git stash pop --index

如果恢复时有冲突(暂存的文件与当前工作区有重叠),提示用户手动解决。

Step 9: 生成操作报告

优先尝试 HTML 报告:

如果 scripts/generate_git_report.py 存在且 Python3 可用,生成 HTML 报告:

python3 /scripts/generate_git_report.py 
  --repo-path  
  --output /git-report-.html 
  --operation "" 
  --commit-range ..

降级方案(Markdown):

如果 HTML 脚本不可用或执行失败,自动生成 Markdown 格式报告(输出到控制台或保存为 .md 文件):

# Git 操作报告
- 操作时间:2025-05-25 10:30:00
- 操作类型:merge (feature/login → master)
- 操作前 commit:a1b2c3d
- 操作后 commit:d4e5f6g

## 变更统计
| 文件 | 新增行 | 删除行 |
|------|--------|--------|
| src/login.py | +15 | -3 |

## 冲突处理
- 冲突文件:无

## 回退命令
如需回退到此操作前状态,执行:
  git reset --hard a1b2c3d
  git stash pop   # 若之前有 stash

报告必须包含回退命令,以操作前保存的 HEAD hash 生成回退指南。

常用场景完整示例

场景一:安全提交(只提交不上传)

用户:帮我提交代码
助手:
  1. 模式:commit
  2. 当前变更文件:src/main.py(+42-10), src/utils.py(+5-2), tests/test_main.py(+20-0)
     目标文件:所有已跟踪文件的变更
     暂存文件:无(所有变更都是目标)
  3. 预检查:无警告
  4. 暂存并保存快照...
  5. fetch origin... 已是最新
  6. 差异分析:3 个文件被修改,共 +67 -12 行
  7. 即将执行:git add -u && git commit -m "<待编辑>"
     是否继续?y
  8. 请编辑提交消息:[feat] 增加用户认证模块
     确认提交?(y/n/编辑) y
  9. 提交成功。恢复暂存...
  10. 生成报告(含回退命令)...
     操作完成。是否推送?(y/n) n

场景二:合并分支并遇到冲突

用户:把 feature/payment 合并到 develop
助手:
  1. 模式:merge,源=feature/payment,目标=develop
  2. 预检查:无警告
  3. 暂存当前工作区(如有)...
  4. fetch origin
  5. 分析差异:两分支共有 3 个文件可能冲突
  6. 即将执行:git checkout develop && git merge feature/payment
     是否继续?y
  7. 检测到冲突:src/payment.py 第 45-52 行
     冲突内容:if amount > 100 (HEAD) vs if amount >= 100 (feature/payment)
     已备份原始冲突文件到 .git-conflict-backup-xxx/
     请手动解决冲突,完成后输入 'done'。
     编辑命令:vim src/payment.py
  8. 用户完成,验证无冲突标记,执行 git add
  9. 生成合并提交消息,确认后提交
  10. 恢复暂存...
  11. 生成报告(含冲突详情和回退命令)

报告脚本

本 Skill 捆绑了 HTML 报告生成脚本。当需要生成报告时,读取并执行 scripts/generate_git_report.py。

脚本路径相对于 SKILL.md:scripts/generate_git_report.py

脚本用法

python3 /scripts/generate_git_report.py 
  --repo-path /path/to/repo 
  --output /path/to/report.html 
  --operation "merge: feature/login -> master" 
  --commit-range HEAD~3..HEAD 
  --pre-hash a1b2c3d

参数说明:

  • --repo-path:Git 仓库路径(必填)
  • --output:输出 HTML 文件路径(必填)
  • --operation:操作描述(必填)
  • --commit-range:要展示的 commit 范围,如 HEAD~3..HEAD(可选)
  • --conflict-files:冲突文件列表,逗号分隔(可选)
  • --pre-hash:操作前 HEAD hash,用于生成回退命令(可选)

降级方案

如果 Python3 或脚本不可用,使用以下命令生成 Markdown 报告:

{
  echo "# Git 操作报告"
  echo "- 操作:"
  echo "- 时间:$(date)"
  echo ""
  echo "## 提交记录"
  git log --oneline -5
  echo ""
  echo "## 文件变更"
  git diff --stat HEAD~1..HEAD
  echo ""
  echo "## 回退命令"
  echo "git reset --hard 
"
  echo "git stash pop"
} > report.md

安全回退指南

每次操作报告中都会提供回退命令。用户也可主动要求回退:

用户:回退上一次操作
助手:根据保存的快照,执行以下命令即可恢复:
  git reset --hard $(cat .git-pre-operation-hash)
  git stash pop

建议用户定期清理 .git-pre-operation-* 和 .git-conflict-backup-* 文件。

目录

热门AI工具

更多
AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
git怎么对比两个版本的文件内容
git怎么对比两个版本的文件内容

要对比两个版本的 git 文件,请使用 git diff 命令:git diff 比较工作树和暂存区之间的差异。git diff 比较两个提交或标签之间的差异。git diff 输出显示差异块,其中 + 表示添加的行,- 表示删除的行, 表示修改的行。可使用 gitkraken、meld、beyond compare 等可视化工具更直观地查看差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2281

2024.04.09

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2517

2024.04.09

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

714

2023.07.24

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

1260

2023.07.06

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

3859

2023.07.05

Uvicorn 报错与问题解决教程
Uvicorn 报错与问题解决教程

本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

0

2026.11.02

Uvicorn使用教程
Uvicorn使用教程

本专题汇总了Uvicorn使用教程与启动运行指南,涵盖其作为Python ASGI服务器的定位与特点,以及命令行启动(uvicorn main:app --reload)、参数配置(host/port/workers)、程序内嵌运行与Gunicorn结合部署等核心用法。同时整理了热重载调试、日志配置与生产环境部署优化等技巧,助你快速掌握Uvicorn的运行与配置。

0

2026.11.02

Uvicorn安装配置教程
Uvicorn安装配置教程

本专题汇总了Uvicorn的安装配置教程与部署指南,涵盖通过pip安装Uvicorn、启动FastAPI/Starlette应用、开发模式热重载(--reload)及多进程工作模式配置等核心操作。同时整理了结合Gunicorn的生产部署方案、HTTPS与反向代理配置及性能调优技巧,助你快速完成Uvicorn服务的安装与上线部署。

0

2026.11.02

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

0

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
vscode手册
vscode手册

共0课时 | 0人学习

Git 教程
Git 教程

共21课时 | 8.1万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn