Safely amend commits with HEAD verification and push checks
View on GitHubSelect agents to install to:
npx add-skill https://github.com/cowwoc/claude-code-cat/blob/main/plugin/skills/git-amend/SKILL.md -a claude-code --skill git-amendInstallation paths:
.claude/skills/git-amend/# Git Amend Skill **Purpose**: Safely amend the most recent commit with proper verification checks. ## Safety Rules ### Only Amend When ALL Conditions Are Met 1. **HEAD commit was created by you** in this session 2. **Commit has NOT been pushed** to remote 3. **You intend to modify HEAD** (not an earlier commit) ```bash # Check if pushed: git status # Look for: "Your branch is ahead of 'origin/main' by X commits" # "up to date" = already pushed (amending creates divergent history) ``` ## Quick Workflow ```bash # 1. Verify HEAD is the commit you want to amend git log --oneline -1 # 2. Verify not pushed to remote git status # Must show "ahead of origin" # 3. Make your changes (edit files, stage new files) git add <files> # 4. Amend the commit git commit --amend # Or with new message: git commit --amend -m "New message" # Or keep same message: git commit --amend --no-edit ``` ## Common Use Cases ### Fix a typo in the last commit ```bash # Edit the file vim file.txt # Stage and amend git add file.txt git commit --amend --no-edit ``` ### Add forgotten file to last commit ```bash git add forgotten-file.txt git commit --amend --no-edit ``` ### Change commit message only ```bash git commit --amend -m "Better commit message" ``` ## Dangerous Situations ```bash # Only amend unpushed commits git push origin main git commit --amend # Creates divergent history! # Only amend your own commits git pull # Pulls teammate's commit git commit --amend # Rewrites their work! # If you must amend after push (with explicit permission): git commit --amend git push --force-with-lease # Safer than --force ``` ## Amending Earlier Commits To modify a commit that's NOT at HEAD, use interactive rebase: ```bash # 1. Start interactive rebase git rebase -i <commit>^ # Parent of commit to edit # 2. Change 'pick' to 'edit' for the target commit # 3. Make changes when rebase stops git add <files> git commit --amend # 4. Continue rebase git rebase --continue ``` ## Error