Files
MrleeAdmin/.windsurf/skills/git-submit/SKILL.md
T

5.4 KiB

name, description
name description
git-submit 仓库代码提交规范,覆盖状态检查、提交、同步远程、推送及常见冲突处理

适用范围

用于将当前仓库的本地代码安全提交到远程仓库。执行前必须确认用户明确要求提交或推送;仅查看代码、开发功能或运行测试时,不主动执行提交和推送。

当前项目约定:

  • 默认分支:main
  • 远程名称:origin
  • 远程地址:以 git remote -v 的实际输出为准,不重复添加已存在的 origin
  • 提交信息:使用简洁、准确的中文描述,说明本次变更目的

标准提交流程

1. 确认仓库位置和当前状态

在项目根目录执行:

git rev-parse --show-toplevel
git status --short --branch
git branch --show-current
git remote -v

检查以下内容:

  • 是否位于目标仓库根目录
  • 当前分支是否为预期分支,默认应为 main
  • 是否存在未提交修改、未跟踪文件或冲突文件
  • origin 是否已配置,以及拉取和推送地址是否正确

如果 origin 已存在,不要执行 git remote add origin。需要修正地址时使用:

git remote set-url origin <仓库地址>

2. 审阅变更内容

提交前查看文件变更和差异:

git status
git diff
git diff --stat

确认:

  • 没有误改、敏感信息、密钥、日志或临时文件
  • 修改范围与用户需求一致
  • 不应提交的文件已通过 .gitignore 排除
  • 若发现不属于本次任务的修改,不要擅自删除或覆盖;只暂存确认过的文件

如需查看某个文件的差异:

git diff -- <文件路径>

3. 暂存需要提交的文件

优先按文件或目录精确暂存:

git add <文件路径>
git add <目录路径>

仅当确认工作区所有修改都属于本次任务时,才使用:

git add .

暂存后复核:

git status

git diff --cached
git diff --cached --stat

如果误暂存文件,可取消暂存,不会丢失文件修改:

git restore --staged <文件路径>

4. 提交本地变更

确保暂存区内容正确后提交:

git commit -m "<简洁明确的提交说明>"

提交信息建议:

  • 使用中文描述业务目的或技术变更
  • 避免使用“修改一下”“临时提交”等无信息内容
  • 一次提交尽量只包含一个完整主题

提交后检查:

git status --short --branch
git log -1 --oneline

如果提示 nothing to commit,说明当前没有新的已暂存变更;先检查状态和最近提交,不要重复创建空提交。

5. 推送到远程仓库

首次推送当前分支或需要建立跟踪关系时:

git push -u origin main

已有跟踪关系时:

git push origin main

不要在未确认目标分支的情况下直接推送其他分支。推送后核验:

git status --short --branch
git log -1 --oneline

状态应显示本地 main 与 origin/main 同步,且没有意外的未提交修改。

远程同步与冲突处理

推送被拒绝:远程包含本地没有的提交

不要直接强制推送。先获取并以变基方式同步:

git pull --rebase origin main

同步无冲突后再次推送:

git push origin main

变基过程中出现冲突

  1. 查看冲突文件:
git status
  1. 打开冲突文件,保留正确内容并移除冲突标记:
<<<<<<<
=======
>>>>>>>
  1. 逐个标记已解决的文件:
git add <已解决的文件路径>
  1. 继续变基:
git rebase --continue
  1. 变基完成后推送:
git push origin main

如果无法安全解决,保留现场并中止变基:

git rebase --abort

中止后先向用户说明冲突文件和原因,不要擅自覆盖远程或本地内容。

工作区有本地未提交修改,无法同步

先查看状态和差异,确认这些修改是否属于当前任务。未经确认不要使用 git reset --hard 或其他会丢失修改的命令。必要时可在用户确认后暂存并同步,或先创建临时提交。

只有确认远程历史应被覆盖时才使用强制推送

默认禁止使用:

git push --force

如果用户明确确认覆盖远程历史,优先使用更安全的方式:

git push --force-with-lease origin main

执行前再次核对远程地址、目标分支和将被覆盖的提交。

禁止事项

  • 不重复执行已存在远程名的 git remote add origin
  • 不使用 git push --force 绕过推送拒绝
  • 不使用 git reset --hard、清理命令或覆盖操作来隐藏问题
  • 不提交密钥、密码、个人配置、构建产物和临时文件
  • 不跳过变更审阅直接执行 git add .、git commit、git push
  • 不在未确认分支和远程地址时推送

提交检查清单

  • 已确认项目根目录和当前分支
  • 已确认 origin 的实际远程地址
  • 已查看工作区状态和差异
  • 已排除无关修改及敏感文件
  • 已精确暂存目标文件
  • 已复核暂存区差异
  • 已使用清晰的提交信息
  • 已确认提交成功
  • 已同步远程历史或处理冲突
  • 已推送到预期的 origin/main
  • 已确认本地分支与远程分支同步