github-commit-push
2
总安装量
2
周安装量
#73991
全站排名
安装命令
npx skills add https://github.com/xdrshjr/jr-openclaw-skills --skill github-commit-push
Agent 安装分布
trae
2
gemini-cli
2
replit
2
antigravity
2
claude-code
2
codex
2
Skill 文档
GitHub Commit & Push
宿´ç GitHub ä»£ç æäº¤ä¸æ¨é工使µãå¤ç仿¬å°æäº¤å°è¿ç¨æ¨éç宿´æµç¨ï¼å æ¬è¿ç¨ä»åºé ç½®ãåå²åå¹¶å²çªè§£å³å SSH æ¨éã
⨠Features
- ð èªå¨é ç½® Remote – èªå¨æ·»å GitHub è¿ç¨ä»åº
- ð è§èæäº¤ä¿¡æ¯ – éµå¾ª Conventional Commits è§è
- ð æºè½åå¹¶ – èªå¨å¤ç unrelated histories å²çª
- ð SSH æ¨é – ä½¿ç¨ SSH å¯é¥å®å ¨æ¨é
- ð æäº¤ç¶ææ£æ¥ – æ¥çåæ´æä»¶åæäº¤åå²
åç½®è¦æ±
# ç¡®ä¿å·²å®è£
git
git --version
# ç¡®ä¿å·²é
ç½® GitHub SSH å¯é¥
ls ~/.ssh/id_*.pub
# å¦ææ²¡æï¼å
çæ SSH keyï¼
# ssh-keygen -t ed25519 -C "your_email@example.com"
å¿«éå¼å§
1. æ£æ¥å½åç¶æ
cd your-project
git status
git remote -v
2. é ç½®è¿ç¨ä»åºï¼å¦ææ²¡æï¼
# æ·»å GitHub è¿ç¨ä»åºï¼SSH æ¹å¼ï¼
git remote add origin git@github.com:username/repo.git
# æè
ä½¿ç¨ HTTPSï¼éè¦ tokenï¼
git remote add origin https://github.com/username/repo.git
3. æäº¤æ´æ¹
# æ¥çåæ´
git diff --cached --stat
# æ·»å æä»¶
git add <file>
# æäº¤ï¼éµå¾ª Conventional Commitsï¼
git commit -m "type(scope): description
详ç»è¯´æ...
fixes #123"
4. æ¨éå°è¿ç¨
# å
è·åè¿ç¨æ´æ°
git fetch origin
# æ£æ¥æ¯å¦æå²çª
git log HEAD..origin/main --oneline
# åå¹¶è¿ç¨æ´æ¹ï¼å¦ææï¼
git pull origin main --allow-unrelated-histories --no-rebase
# æ¨é
git push origin main
宿´å·¥ä½æµèæ¬
å建 scripts/commit-and-push.shï¼
#!/bin/bash
# GitHub Commit & Push èæ¬
# ç¨æ³: ./commit-and-push.sh "commit message" [branch]
set -e
COMMIT_MSG="${1:-Update files}"
BRANCH="${2:-main}"
REMOTE_URL="${3:-}"
echo "ð GitHub Commit & Push"
echo "======================"
# 1. æ£æ¥æ¯å¦å¨ git ä»åº
if ! git rev-parse --git-dir > /dev/null 2>&1; then
echo "â å½åç®å½ä¸æ¯ git ä»åº"
exit 1
fi
# 2. æ£æ¥è¿ç¨ä»åº
if ! git remote -v > /dev/null 2>&1; then
if [ -z "$REMOTE_URL" ]; then
echo "â æªé
ç½®è¿ç¨ä»åºï¼è¯·æä¾ä»åº URL"
echo "ç¨æ³: $0 'commit msg' branch 'git@github.com:user/repo.git'"
exit 1
fi
echo "ð æ·»å è¿ç¨ä»åº..."
git remote add origin "$REMOTE_URL"
fi
echo "ð å½å忝: $(git branch --show-current)"
echo "ð è¿ç¨ä»åº: $(git remote get-url origin)"
# 3. æ£æ¥æ¯å¦æåæ´
if git diff --cached --quiet && git diff --quiet; then
echo "â ï¸ æ²¡æè¦æäº¤çåæ´"
exit 0
fi
# 4. æ¾ç¤ºå°è¦æäº¤çæä»¶
echo ""
echo "ð åæ´æä»¶:"
git status --short
# 5. æ·»å ææåæ´
echo ""
echo "â æ·»å æä»¶..."
git add -A
# 6. æäº¤
echo ""
echo "ð¾ æäº¤æ´æ¹..."
git commit -m "$COMMIT_MSG"
echo "â
æäº¤æå: $COMMIT_MSG"
# 7. è·åè¿ç¨æ´æ°
echo ""
echo "ð¥ è·åè¿ç¨æ´æ°..."
git fetch origin
# 8. æ£æ¥æ¯å¦éè¦åå¹¶
LOCAL=$(git rev-parse @)
REMOTE=$(git rev-parse origin/$BRANCH 2>/dev/null || echo "null")
if [ "$REMOTE" != "null" ] && [ "$LOCAL" != "$REMOTE" ]; then
echo "ð éè¦åå¹¶è¿ç¨æ´æ¹..."
if git merge-base --is-ancestor origin/$BRANCH HEAD 2>/dev/null; then
echo "â¡ æ¬å°é¢å
è¿ç¨ï¼ç´æ¥æ¨é"
else
echo "ð åå¹¶è¿ç¨æ´æ¹..."
git pull origin $BRANCH --allow-unrelated-histories --no-rebase || {
echo "â åå¹¶å²çªï¼è¯·æå¨è§£å³"
exit 1
}
fi
fi
# 9. æ¨é
echo ""
echo "ð¤ æ¨éå°è¿ç¨..."
git push origin $BRANCH
echo ""
echo "â
æ¨éæåï¼"
echo "ð æ¥ç: $(git remote get-url origin | sed 's/\.git$//' | sed 's/git@github.com:/https:\/\/github.com\//')"
常ç¨å½ä»¤éæ¥
æäº¤è§è
# feat: æ°åè½
git commit -m "feat(auth): add login with OAuth"
# fix: ä¿®å¤
git commit -m "fix(api): handle null pointer exception"
# docs: ææ¡£
git commit -m "docs(readme): update installation guide"
# refactor: éæ
git commit -m "refactor(utils): simplify date formatting"
# chore: æé¡¹
git commit -m "chore(deps): update dependencies"
å¤ç常è§é®é¢
é®é¢ 1ï¼æªé ç½® remote
fatal: 'origin' does not appear to be a git repository
# è§£å³
git remote add origin git@github.com:username/repo.git
é®é¢ 2ï¼unrelated histories
fatal: refusing to merge unrelated histories
# è§£å³
git pull origin main --allow-unrelated-histories --no-rebase
é®é¢ 3ï¼éè¦èº«ä»½éªè¯
fatal: could not read Username for 'https://github.com'
# è§£å³ - åæ¢å° SSH
git remote set-url origin git@github.com:username/repo.git
é®é¢ 4ï¼æéæç»
Permission denied (publickey)
# è§£å³ - æ£æ¥ SSH key
ssh -T git@github.com
# å¦ææ²¡æ keyï¼çæå¹¶æ·»å å° GitHub
ssh-keygen -t ed25519 -C "email@example.com"
cat ~/.ssh/id_ed25519.pub
# ç¶åå¤å¶å° GitHub Settings -> SSH Keys
æä½³å®è·µ
- é¢ç¹æäº¤ï¼å°æ¥å¿«è·ï¼æ¯æ¬¡æäº¤å®æä¸ä¸ªé»è¾åå
- å好æäº¤ä¿¡æ¯ï¼éµå¾ª Conventional Commits è§è
- å pull å pushï¼é¿å è¦çä»äººæ´æ¹
- ä½¿ç¨ SSHï¼æ¯ HTTPS æ´å®å ¨æ¹ä¾¿
- æ£æ¥ç¶æï¼æäº¤å使ç¨
git statusågit diffæ£æ¥
èªå¨åèæ¬
å建 .clawdhub/manifest.jsonï¼
{
"id": "github-commit-push",
"name": "GitHub Commit & Push",
"version": "1.0.0",
"description": "Complete git commit and push workflow for GitHub",
"author": "xdrshjr",
"tags": ["git", "github", "commit", "push"],
"entry": "scripts/commit-and-push.sh"
}
使ç¨ç¤ºä¾
# è¿å
¥é¡¹ç®ç®å½
cd ~/clawd
# æ¥çç¶æ
git status
# æ·»å è¿ç¨ï¼å¦ææ²¡æï¼
git remote add origin git@github.com:xdrshjr/JR-Agent-Skills.git
# æ·»å æä»¶
git add skills/remotion-synced-video/SKILL.md
# æäº¤
git commit -m "docs(remotion-synced-video): add audio sync best practices
- Add measure-audio.sh script for duration measurement
- Update index.tsx to use dynamic duration calculation
- Add troubleshooting for audio-visual sync issues"
# è·åè¿ç¨æ´æ°å¹¶åå¹¶
git pull origin main --allow-unrelated-histories --no-rebase
# æ¨é
git push origin main
Pro Tip: ä½¿ç¨ SSH æ¹å¼é ç½® remote å¯ä»¥é¿å æ¯æ¬¡æ¨éé½è¾å ¥å¯ç ï¼æ¨èææ GitHub ä»åºé½ä½¿ç¨ SSH æ¹å¼ã