Git推送技能Skill push

这个技能提供Git推送操作的全面指导,涵盖基本推送、安全强制推送、标签推送、远程管理和故障排除,帮助开发者安全高效地管理代码版本和协作,关键词包括:Git、推送、强制推送、远程管理、标签、版本控制、开发工具。

DevOps 0 次安装 0 次浏览 更新于 3/11/2026

name: push description: 全面的Git推送操作,包括基本推送、强制推送安全协议、标签推送、远程管理和故障排除。当推送提交、管理远程、推送标签、解决推送冲突、处理被拒绝的推送或处理强制推送场景时使用。涵盖推送策略、分支保护、上游配置和push --force-with-lease最佳实践。 allowed-tools: Read, Bash, Glob, Grep

Git推送

Git推送操作的全面指导,从基本推送到强制推送安全协议和远程管理。

概述

这个技能提供Git推送操作的完整指导,强调安全协议(特别是强制推送)、远程管理和常见推送场景的故障排除。它通过专注于推送操作和远程同步来补充git-commit技能(处理提交创建)。

使用时机

这个技能应在以下情况下使用:

  • 推送提交 - 基本推送操作到远程仓库
  • 强制推送 - 使用安全协议重写历史(force-with-lease)
  • 推送标签 - 注释标签、轻量标签、标签工作流
  • 管理远程 - 添加、删除、重命名、配置远程仓库
  • 故障排除推送 - 被拒绝的推送、冲突、认证问题
  • 上游配置 - 设置跟踪分支、push.autoSetupRemote
  • 分支保护 - 理解受保护分支和推送限制

触发关键词: push, force push, force-with-lease, remote, upstream, tracking branch, rejected push, push --force, git push origin, push tags, remote add

先决条件

这个技能假设:

  • Git已安装(通过git --version验证)
  • 仓库已初始化(本地仓库有.git/目录)
  • 远程已配置(通常是GitHub/GitLab/Bitbucket的origin
  • 基本Git知识(提交、分支、远程)

有关Git安装帮助,请参阅setup技能。

快速开始

基本推送

# 推送当前分支到远程(如果上游已配置)
git push

# 推送并设置上游用于首次推送
git push -u origin feature-branch

# 推送特定分支到远程
git push origin main

安全强制推送

# 安全强制推送(推荐 - 仅当没有其他人推送时覆盖)
git push --force-with-lease

# 最安全强制推送(推荐用于最大安全性)
git push --force-with-lease --force-if-includes

# 特定分支的force-with-lease
git push --force-with-lease origin feature-branch

推送标签

# 推送特定标签
git push origin v1.0.0

# 推送所有标签
git push --tags

# 推送提交 + 指向它们的注释标签
git push --follow-tags

核心能力

1. 基本推送操作

将本地提交推送到远程仓库进行协作和备份。

基本命令:

# 推送当前分支(上游必须已配置)
git push

# 推送并设置上游(首次推送)
git push -u origin feature-branch

# 推送特定分支
git push origin main

# 干运行(预览而不推送)
git push --dry-run

📖 详细配置: 参见references/push-configuration.md获取上游设置、推送策略和高级选项。


2. 强制推送安全协议

在必要时安全地重写远程历史(在变基、修改或压缩提交后)。

关键安全规则:

  • 仅对功能分支进行强制推送(您的个人工作)
  • 总是使用--force-with-lease(而不是--force
  • 切勿强制推送到main/master/develop(共享分支)
  • 切勿在其他人正在处理同一分支时强制推送

安全强制推送命令:

# ✅ 安全:仅当自您上次获取以来没有其他人推送时覆盖
git push --force-with-lease

# ✅ 最安全:最大安全性与force-if-includes
git push --force-with-lease --force-if-includes

📖 全面安全指导: 参见references/force-push-safety.md获取详细安全协议、预推送检查清单、恢复程序和分支保护。


3. 标签推送

将版本标签推送到远程以用于发布和里程碑。

快速命令:

# 创建并推送注释标签(推荐用于发布)
git tag -a v1.0.0 -m "发布版本 1.0.0"
git push origin v1.0.0

# 推送所有标签
git push --tags

# 推送提交 + 注释标签(推荐)
git push --follow-tags

📖 完整标签工作流: 参见references/tag-pushing.md获取标签类型、策略、别名和最佳实践。


4. 远程管理

配置和管理远程仓库以进行推送/获取操作。

快速命令:

git remote -v                    # 列出远程
git remote add origin <url>      # 添加远程
git remote set-url origin <url>  # 更改URL
git remote rename origin upstream # 重命名远程

📖 详细远程管理: 参见references/remote-management.md获取配置、分叉工作流和凭证管理。


5. 故障排除推送问题

诊断和解决常见推送失败和冲突。

常见问题 - 快速修复:

# 被拒绝的推送(非快进)
git pull --rebase && git push

# 认证失败
ssh -T git@github.com  # 测试SSH
git remote set-url origin git@github.com:username/repo.git

# 受保护分支
git switch -c feature-branch
git push -u origin feature-branch

📖 全面故障排除: 参见references/troubleshooting.md获取详细诊断和解决方案。


常见工作流

功能分支开发

git switch -c feature/user-auth
git commit -m "feat(auth): 实现认证"
git push -u origin feature/user-auth  # 首次推送设置上游
git push  # 后续推送

变基和强制推送

git fetch origin
git rebase origin/main
git push --force-with-lease  # 安全强制推送

生产热修复

git switch main && git pull
git switch -c hotfix/critical-bug
git commit -m "fix: 解决关键错误"
git push -u origin hotfix/critical-bug
gh pr create --title "HOTFIX: ..."

📖 其他工作流: 参见references/workflows.md获取分叉贡献、发布标签和复杂多远程场景。


最佳实践

关键安全规则:

  • ✅ 总是使用--force-with-lease(而不是--force
  • ✅ 切勿强制推送到main/master/develop
  • ✅ 推送前验证无敏感数据
  • ✅ 推送前运行测试(不推送损坏的代码)

推送频率:

  • ✅ 每天推送以备份和协作
  • ✅ 完成逻辑工作单元后推送
  • ❌ 不推送损坏的代码或敏感数据

📖 全面最佳实践: 参见references/best-practices.md获取安全协议、安全、协作指南和高级场景。


参考资料

详细指南:

相关技能:

  • git-commit - 提交创建、提交消息、PR工作流
  • config - Git配置、别名、凭证管理
  • line-endings - .gitattributes, Git LFS设置

测试场景

场景1:基本功能分支推送

查询: “我在我的功能分支上做了一些提交。如何将它们推送到远程?”

预期行为:

  • 技能在“push”、“feature branch”、“commits”、“remote”上激活
  • 提供带上游设置的基本推送命令
  • 解释-u标志用于首次推送

场景2:变基后强制推送

查询: “我将我的功能分支变基到main上。现在推送被拒绝。我该怎么办?”

预期行为:

  • 技能在“rebase”、“push”、“rejected”上激活
  • 解释为什么推送被拒绝(历史重写)
  • 推荐git push --force-with-lease并附安全解释
  • 提供预强制推送检查清单

场景3:发布推送标签

查询: “如何将我的v1.0.0标签推送到GitHub?”

预期行为:

  • 技能在“push”、“tag”、“v1.0.0”、“release”上激活
  • 提供特定标签推送命令
  • 解释推送单个标签与所有标签的区别

场景4:由于远程更改被拒绝的推送

查询: “我的推送被拒绝,并显示关于非快进的消息。这是什么意思?”

预期行为:

  • 技能在“push”、“rejected”、“non-fast-forward”上激活
  • 解释原因(有人先推送了)
  • 提供解决方案选项(fetch+merge、fetch+rebase、pull --rebase)

场景5:管理多个远程

查询: “我分叉了一个仓库。如何推送到我的分叉但从原始拉取?”

预期行为:

  • 技能在“fork”、“push”、“pull”、“remote”上激活
  • 解释带上游远程的分叉工作流
  • 提供添加上游远程的命令

多模型测试笔记

测试于:

  • Claude Sonnet 4.5:已验证 - 技能在所有触发关键词上正确激活,提供全面的推送指导,有效处理强制推送安全协议。渐进式披露与按需加载参考文件效果良好。

  • Claude Haiku 3.7: 🔄 待测试 - 需要验证:(1) 技能激活可靠性,(2) 强制推送安全指导清晰度,(3) 渐进式披露有效性。

  • Claude Opus 3.7: 🔄 待测试 - 需要验证:(1) 技能激活,(2) 故障排除指导深度,(3) 参考文件加载行为。

观察:

  • 强触发关键词(“push”、“force push”、“remote”、“tag”、“rejected”、“upstream”)在各种模型上效果良好
  • 强制推送安全协议清晰阐述,带有视觉警告
  • 实现渐进式披露:主文件减少到约400行,详细内容在references/

最后更新: 2025-11-28

版本历史

  • v1.0.0 (2025-12-26):初始发布

审计状态: ✅ 通过(A型标准技能) 内容验证: 所有技术声明通过MCP服务器针对git-scm.com、Perplexity、Microsoft Learn验证