AgentSkillsCN

git-push

执行Git推送工作流,将当前分支安全地推送到远程仓库。当用户希望推送提交、将本地代码同步至远程仓库,或与远程仓库保持实时同步时,可选用此技能。

SKILL.md
--- frontmatter
name: git-push
description: Git プッシュワークフローの実行。現在のブランチをリモートリポジトリに安全にプッシュする。Use when user wants to push commits, push to remote, or sync with remote repository.
allowed-tools: Bash, Read, Grep, Glob

Git Push スキル

Instructions

このスキルは Git プッシュの全ワークフローを提供します。

重要: git コマンドは作業ディレクトリで直接実行する。git -C は使用禁止。

実行フロー

1. 事前確認(並列実行)

以下の git コマンドを並列で実行:

bash
git status                                              # コミットされていない変更
git branch -vv                                          # ブランチとトラッキング状態
git log @{u}..HEAD --oneline 2>/dev/null || echo "No upstream"  # プッシュ予定のコミット

2. 安全性チェック

以下を確認:

  • force push が必要な状態でないか
  • リモートとの差分が妥当か
警告が必要なケース
ケース対応
force push が必要AskUserQuestion ツールで明示的な確認を取る
コミットされていない変更がある先にコミットするか確認

3. プッシュ実行

bash
# アップストリームが設定されていない場合
git push -u origin <current-branch>

# アップストリームが設定済みの場合
git push

4. 結果確認

プッシュ後、成功メッセージまたはエラーを報告する。

オプション引数

  • --force または -f: force push を実行(ユーザー確認後のみ)
  • --set-upstream または -u: アップストリームを設定してプッシュ

安全規則

絶対禁止

  • main/master/develop への force push は絶対禁止
  • git config の更新は禁止
  • --force-with-lease なしの force push は非推奨

要確認

  • main/master/develop への直接プッシュ
  • force push(他ブランチでも確認必須)
  • リモートとの diverge 状態

エラー対応

エラー対応
ネットワークエラーリトライを提案
認証エラー認証設定の確認を促す
リモートが先行pull --rebase を提案
reject(non-fast-forward)状況を説明し、rebase または force の判断を仰ぐ

Examples

通常のプッシュ

bash
# 状態確認
$ git status
On branch feature/add-login
Your branch is ahead of 'origin/feature/add-login' by 2 commits.

# プッシュ実行
$ git push
Enumerating objects: 10, done.
...
To github.com:user/repo.git
   abc1234..def5678  feature/add-login -> feature/add-login

新規ブランチの初回プッシュ

bash
# アップストリーム未設定の場合
$ git push -u origin feature/new-feature
Branch 'feature/new-feature' set up to track remote branch 'feature/new-feature' from 'origin'.

force push が必要な場合(要確認)

code
⚠️ force push が必要です。

現在の状態:
- ローカル: abc1234
- リモート: xyz9876(diverged)

force push を実行しますか?
注意: リモートの変更が失われる可能性があります。

[確認後のみ実行]
$ git push --force-with-lease