一键导入
everyday-git-identity-rewrite
重写当前仓库 Git 提交记录中的作者/提交者姓名和邮箱,并同步迁移 tag。当用户明确要求把某姓名邮箱替换成另一组身份信息时调用。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
重写当前仓库 Git 提交记录中的作者/提交者姓名和邮箱,并同步迁移 tag。当用户明确要求把某姓名邮箱替换成另一组身份信息时调用。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
根据用户需求优化 AI 生图提示词,补全主体、场景、构图、光线、风格和约束;当用户要求生成、润色、扩写、改写提示词,或结合上传图片整理提示词时调用。
读取项目当前提交(HEAD)与最新Git Tag间的提交记录并生成版本日志。当用户要求总结版本更新、生成Release Notes或获取最新更新日志时调用。
根据当天 Git 提交记录生成 AI 日报。当用户要求写日报、汇总今日提交或写工作总结时调用。
给用户输入的文本中插入大量 emoji,不修改原文本。当用户要求给文字插入 emoji 或类似请求时调用。
专为 Seedance 2.0 模型设计的 AI 视频提示词生成助手。支持中文提示词编写,时长设定为 15 秒,包含角色声音描述,并能将模糊想法扩展为具体的小剧场或连续动作场景。
续写用户提交的色情小说,或根据模糊想法创作。当用户请求续写色情小说、提供相关内容或只有模糊想法时调用。
| name | everyday-git-identity-rewrite |
| description | 重写当前仓库 Git 提交记录中的作者/提交者姓名和邮箱,并同步迁移 tag。当用户明确要求把某姓名邮箱替换成另一组身份信息时调用。 |
这个 Skill 用于在当前 Git 仓库中批量重写历史提交记录里的姓名和邮箱,适用于用户误用公司 Git 身份提交个人项目、希望移除敏感身份信息的场景。
当用户明确提出以下意图时调用:
典型表达示例:
执行前,必须从用户输入中明确拿到以下 4 个字段:
如果用户没有明确说明这 4 个字段,不要进行任何 Git 重写操作,必须先追问。例如:
从用户请求中提取并复述以下变量:
<old_name><old_email><new_name><new_email>若任一缺失,停止执行并向用户追问。
先确认当前目录是 Git 仓库:
git rev-parse --is-inside-work-tree
如果不是 Git 仓库,直接告知用户无法执行。
然后检查工作区状态:
git status --short
如果工作区不干净,不要直接忽略,先提醒用户:
若存在未提交改动,优先提醒用户先自行确认是否继续;只有在用户仍然明确要求继续时再执行。
先统计当前仓库里命中旧身份的提交数量。统计时要同时检查 author 和 committer:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$oldName = '<old_name>'
$oldEmail = '<old_email>'
$matches = git --no-pager log --all --format='%H%x09%an%x09%ae%x09%cn%x09%ce' |
Where-Object {
$_ -match [regex]::Escape($oldName) -or $_ -match [regex]::Escape($oldEmail)
}
$matchCount = ($matches | Where-Object { $_ -ne '' }).Count
如果 $matchCount 为 0,直接告知用户当前仓库没有发现待替换的历史提交,不执行改写。
优先使用 Git 内置可用的 filter-branch 方案,保证无需额外安装工具,同时带上 tag 迁移参数。
执行命令前,先将变量替换为用户提供的真实值:
$env:FILTER_BRANCH_SQUELCH_WARNING = '1'
$env:OLD_NAME = '<old_name>'
$env:OLD_EMAIL = '<old_email>'
$env:NEW_NAME = '<new_name>'
$env:NEW_EMAIL = '<new_email>'
git filter-branch --force --tag-name-filter cat --env-filter "
if [ `"`$GIT_AUTHOR_NAME`" = `"`$OLD_NAME`" ] || [ `"`$GIT_AUTHOR_EMAIL`" = `"`$OLD_EMAIL`" ]; then
export GIT_AUTHOR_NAME=`"`$NEW_NAME`"
export GIT_AUTHOR_EMAIL=`"`$NEW_EMAIL`"
fi
if [ `"`$GIT_COMMITTER_NAME`" = `"`$OLD_NAME`" ] || [ `"`$GIT_COMMITTER_EMAIL`" = `"`$OLD_EMAIL`" ]; then
export GIT_COMMITTER_NAME=`"`$NEW_NAME`"
export GIT_COMMITTER_EMAIL=`"`$NEW_EMAIL`"
fi
" -- --all
注意事项:
--tag-name-filter cat,以确保 tag 一起迁移。-- --all,以确保所有分支和 tag 都参与重写。为了在报告中说明 tag 是否一并迁移,可在执行前后分别读取 tag 数量:
$tagCount = (git tag | Measure-Object).Count
如果 $tagCount 大于 0,在结果中明确说明本次已对 tag 一并完成迁移重写。
最终回复用户时,必须包含以下信息:
<old_name> / <old_email><new_name> / <new_email><matchCount><tagCount><remainingCount>推荐输出示例:
张三 / zhangsan@gongsi.cn 替换为 jack / jack@gmail.com。12 个提交,检测到 3 个 tag,并已随历史一并迁移。0,校验通过。出现以下任一情况时,不要假装完成,必须如实说明:
git filter-branch 执行失败--force-with-lease 或等价方式,但除非用户明确要求,否则不要代替用户直接推送。