Synthèse automatique
Un guide de dépannage Git qui fournit les commandes pour annuler des commits, restaurer des fichiers supprimés, déplacer un commit mal placé et résoudre ou abandonner un merge conflictuel.
Points forts
- Couvre les erreurs les plus fréquentes : reset --soft/--hard, fichier supprimé avant ou après commit, commit sur la mauvaise branche, HEAD détaché
- Chaque scénario est présenté avec les commandes exactes et l'effet attendu, prêtes à copier
- Rappelle l'usage de git reflog comme filet de sécurité après un reset --hard destructeur
- Distingue clairement les cas déjà poussés (git revert) des cas locaux (git reset)
Limites
- L'identification du problème reste à la charge de l'utilisateur, le skill ne diagnostique pas automatiquement l'état du dépôt
- Ne traite pas la réécriture d'historique sur une branche partagée au-delà de git revert, ni le rebase interactif
- Le document fourni s'interrompt au milieu de la section sur les conflits, la partie résolution en masse est donc partielle
À utiliser dès qu'une commande Git a mal tourné et qu'il faut annuler, restaurer ou débloquer un dépôt sans perdre de travail.
À éviter pour apprendre Git depuis zéro ou pour des opérations de routine sans erreur, comme un commit ou un push normal.
Analyse de sécurité
PrudenceThe skill provides legitimate git recovery techniques but includes commands that can cause irreversible data loss (e.g., reset --hard, clean). It is not malicious, but the power of these commands warrants caution. No network or exfiltration risks are present.
- •Uses powerful git commands like `git reset --hard`, `git clean -fd`, and `git push --force` which can permanently delete uncommitted work or rewrite history.
- •Instructions for discarding changes and cleaning untracked files could lead to data loss if followed incorrectly.
- •No explicit confirmation steps or safety checks before running destructive commands beyond textual warnings.
Exemples
I accidentally committed to main instead of my feature/login branch and haven't pushed yet — how do I move that commit over?I deleted src/config.ts by accident and the deletion is already committed. Can I get the file back?My merge has conflicts in three files and I just want to back out and start over — what do I run?name: git-recovery description: Recovers from git mistakes including undoing commits, recovering deleted files, resolving conflicts, and fixing detached HEAD. Use when user says "undo commit", "recover file", "git reset", "git mistake", "deleted by accident", "merge conflict", or mentions git errors. metadata: author: Mastering Claude Code version: 1.0.0 category: emergency
Git Recovery
Quickly fix common git mistakes and recover lost work.
Instructions
Step 1: Identify What Went Wrong
Common git mistakes:
- Committed to wrong branch (committed to main instead of feature branch)
- Want to undo last commit(s)
- Accidentally deleted a file
- Merge conflict
- Detached HEAD state
- Pushed something that shouldn't have been pushed
- Lost changes after bad merge/rebase
Step 2: Apply the Appropriate Fix
Undo Last Commit (Keep Changes)
Most common scenario: "I just committed but forgot to add a file"
# Undo commit, keep changes staged
git reset --soft HEAD~1
# Now add the forgotten file
git add forgotten-file.txt
# Commit again
git commit -m "Your message"
Keep changes unstaged:
# Undo commit, keep changes but unstaged
git reset HEAD~1
# Now you can modify files before committing again
Undo Last Commit (Discard Changes)
Warning: This deletes your work. Only use if you're sure.
# Undo commit and delete all changes
git reset --hard HEAD~1
Undo last 3 commits:
git reset --hard HEAD~3
If you regret this:
# Find your commit in reflog
git reflog
# Recover it (find the commit hash from reflog)
git reset --hard [COMMIT_HASH]
Recover Deleted File
File deleted but NOT committed:
# Recover one file
git checkout -- path/to/deleted-file.txt
# Or with newer git:
git restore path/to/deleted-file.txt
File deleted AND committed:
# Find when it was deleted
git log --all --full-history -- path/to/file.txt
# Restore from commit before deletion
git checkout [COMMIT_HASH]~1 -- path/to/file.txt
# Now commit the recovered file
git add path/to/file.txt
git commit -m "Recover deleted file"
Can't remember the filename:
# Search for deleted files
git log --diff-filter=D --summary | grep delete
# Or see all deleted files in last 10 commits
git log --diff-filter=D --name-only --pretty=format: HEAD~10..HEAD
Fix: Committed to Wrong Branch
Scenario: You committed to main but should have committed to feature/login
If you haven't pushed yet:
# 1. Note your commit hash
git log -1
# Copy the commit hash
# 2. Undo the commit on main (keep changes)
git reset --soft HEAD~1
# 3. Switch to correct branch (create if needed)
git checkout -b feature/login
# 4. Commit there
git commit -m "Your commit message"
# 5. Go back to main
git checkout main
If you already pushed to main:
# This is trickier - you need to revert on main
# 1. Create the feature branch from current main
git checkout -b feature/login
# 2. Go back to main
git checkout main
# 3. Revert the commit (this creates a new "undo" commit)
git revert HEAD
git push
Resolve Merge Conflicts
When you see:
CONFLICT (content): Merge conflict in src/App.tsx
Automatic merge failed; fix conflicts and then commit the result.
Fix process:
# 1. See which files have conflicts
git status
# 2. Open the conflicted file
# Look for conflict markers:
# <<<<<<< HEAD
# Your changes
# =======
# Their changes
# >>>>>>> branch-name
# 3. Edit the file, choose which changes to keep
# Remove the <<<<<<< ======= >>>>>>> markers
# 4. Mark as resolved
git add path/to/resolved-file.txt
# 5. Complete the merge
git commit
Abort a merge:
# If you want to start over
git merge --abort
Accept "theirs" for all conflicts:
git checkout --theirs .
git add .
git commit
Accept "ours" for all conflicts:
git checkout --ours .
git add .
git commit
Fix Detached HEAD
You'll see: HEAD detached at [commit]
What happened: You checked out a specific commit instead of a branch.
Fix:
# Option 1: Create a branch from here
git checkout -b new-branch-name
# Option 2: Go back to a branch
git checkout main
# If you made commits in detached HEAD:
# 1. Note the commit hash
git log -1
# 2. Go to your branch
git checkout main
# 3. Cherry-pick those commits
git cherry-pick [COMMIT_HASH]
Undo a Push (Rewrite History)
Warning: Only do this if you're the only one using the branch.
# Undo last commit locally
git reset --hard HEAD~1
# Force push to remote
git push --force origin [BRANCH_NAME]
Safer alternative (doesn't rewrite history):
# Create a "reverse" commit
git revert HEAD
git push
Recover Lost Commits
Scenario: You did git reset --hard and lost work.
# 1. View reflog (shows all HEAD movements)
git reflog
# Output looks like:
# a1b2c3d HEAD@{0}: reset: moving to HEAD~1
# e4f5g6h HEAD@{1}: commit: Add feature
# i7j8k9l HEAD@{2}: commit: Fix bug
# 2. Find the commit you want to recover
# 3. Reset to that commit
git reset --hard e4f5g6h
Reflog is your time machine - it keeps commits for ~90 days.
Unstage Files
You added files you don't want to commit:
# Unstage one file
git reset HEAD path/to/file.txt
# Unstage all files
git reset HEAD
Discard All Local Changes
Start over from last commit:
# Discard all uncommitted changes
git reset --hard HEAD
# Also delete untracked files
git clean -fd
Common Scenarios
Scenario 1: "I committed to main by mistake"
User says: "I just committed to main but I should have created a feature branch"
Response:
# 1. Create the feature branch (keeps your commit)
git checkout -b feature/my-work
# 2. Go back to main
git checkout main
# 3. Reset main to before your commit
git reset --hard origin/main
# 4. Go back to your feature branch
git checkout feature/my-work
# Your commit is now on feature/my-work, main is clean
Scenario 2: "I want to undo my last commit"
User says: "I need to undo my last commit but keep the changes"
Response:
# Undo commit, keep changes staged
git reset --soft HEAD~1
# Now modify files if needed, then commit again
git commit -m "Fixed commit message"
Scenario 3: "I accidentally deleted a file"
User says: "I deleted src/components/Header.tsx by accident and need it back"
If NOT committed:
git checkout -- src/components/Header.tsx
If already committed:
# Find the commit where you deleted it
git log --all -- src/components/Header.tsx
# Restore from one commit before deletion
git checkout [COMMIT_HASH]~1 -- src/components/Header.tsx
# Commit the recovery
git add src/components/Header.tsx
git commit -m "Recover deleted Header.tsx"
Scenario 4: "Merge conflict - how do I fix this?"
User says: "I tried to merge and got conflicts in App.tsx"
Response:
# 1. Check which files have conflicts
git status
# 2. Open App.tsx, look for these markers:
# <<<<<<< HEAD
# Your changes
# =======
# Their changes
# >>>>>>> branch-name
# 3. Edit the file: keep what you want, delete the markers
# 4. Mark as resolved
git add App.tsx
# 5. Complete the merge
git commit
# If you want to abort instead:
git merge --abort
Scenario 5: "I'm in detached HEAD state"
User says: "Git says 'HEAD detached at abc123'"
Response:
# If you want to keep your changes here:
git checkout -b new-branch-name
# If you want to go back to main:
git checkout main
# Your work isn't lost - it's in reflog for 90 days
Quick Reference
| Problem | Quick Fix |
|---------|-----------|
| Undo last commit (keep changes) | git reset --soft HEAD~1 |
| Undo last commit (discard) | git reset --hard HEAD~1 |
| Recover deleted file (uncommitted) | git checkout -- [FILE] |
| Recover deleted file (committed) | git checkout [HASH]~1 -- [FILE] |
| Committed to wrong branch | Create branch, reset original |
| Merge conflict | Edit file, remove markers, git add, git commit |
| Detached HEAD | git checkout -b new-branch or git checkout main |
| Unstage file | git reset HEAD [FILE] |
| Discard all changes | git reset --hard HEAD |
| Recover lost commits | git reflog then git reset --hard [HASH] |
Prevention Tips
Before committing:
# Always check what you're committing
git status
git diff
# Check which branch you're on
git branch
Before pushing:
# Review commits
git log --oneline -5
# Make sure you're on the right branch
git branch
Use feature branches:
# Never work directly on main
git checkout -b feature/my-work
# Do your work, commit, then merge via PR
Commit frequently:
# Small commits are easier to undo
# Instead of one big commit, do:
git add src/Header.tsx
git commit -m "Add Header component"
git add src/Footer.tsx
git commit -m "Add Footer component"
When to Use This Skill
✅ Use git-recovery when:
- Made a git mistake
- Need to undo commits
- Deleted a file by accident
- Merge conflict
- Detached HEAD
- Committed to wrong branch
- Lost work after bad git operation
❌ Don't use git-recovery for:
- Learning git fundamentals (read GIT_FOR_VIBE_CODERS.md guide)
- Setting up git workflow (that's architecture)
- Advanced git operations (rebase, submodules, etc.)
- Git configuration
This skill fixes git mistakes. For learning git workflows, see the GIT_FOR_VIBE_CODERS guide in your framework.
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/git-recovery-mryiqi0y/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/git-recovery-mryiqi0y' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/git-recovery-mryiqi0y/download' --output '.skill-downloads/git-recovery-mryiqi0y/SKILL.md.part' && mv '.skill-downloads/git-recovery-mryiqi0y/SKILL.md.part' '.skill-downloads/git-recovery-mryiqi0y/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Extrait original : Quick Reference
| Problem | Quick Fix |
|---|---|
| Undo last commit (keep changes) | git reset --soft HEAD~1 |
| Undo last commit (discard) | git reset --hard HEAD~1 |
| Recover deleted file (uncommitted) | git checkout -- [FILE] |
| Recover deleted file (committed) | git checkout [HASH]~1 -- [FILE] |
| Committed to wrong branch | Create branch, reset original |
| Merge conflict | Edit file, remove markers, git add, git commit |
| Detached HEAD | git checkout -b new-branch or git checkout main |
| Unstage file | git reset HEAD [FILE] |
| Discard all changes | git reset --hard HEAD |
| Recover lost commits | git reflog then git reset --hard [HASH] |
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/git-recovery-mryiqi0y/SKILL.md' && test -s '.skill-downloads/git-recovery-mryiqi0y/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/git-recovery' && cp -R '.skill-downloads/git-recovery-mryiqi0y' '.claude/skills/git-recovery'Cursor
test -f '.skill-downloads/git-recovery-mryiqi0y/SKILL.md' && test -s '.skill-downloads/git-recovery-mryiqi0y/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/git-recovery' && cp -R '.skill-downloads/git-recovery-mryiqi0y' '.cursor/skills/git-recovery'Codex
test -f '.skill-downloads/git-recovery-mryiqi0y/SKILL.md' && test -s '.skill-downloads/git-recovery-mryiqi0y/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/git-recovery' && cp -R '.skill-downloads/git-recovery-mryiqi0y' '.agents/skills/git-recovery'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/git-recovery-mryiqi0y'openskills read 'git-recovery-mryiqi0y'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/git-recovery-mryiqi0y/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Configurer un canal de discussion avec SecretRefs
DevOps
Configurez des canaux de discussion avec des commandes non interactives, les secrets étant uniquement des SecretRefs. Couvre les étapes de collecte, modification, réparation et vérification.
Enquêter sur les échecs CI de ClickHouse
DevOps
Investigue un échec CI de ClickHouse de bout en bout à partir d'une URL de PR ou de rapport S3. Récupère les tests échoués, classe flaky vs vraie régression, et cherche des issues/fixes existants.
Revue de PR Ansible
DevOps
Examine une PR Ansible selon le processus standardisé du projet, incluant la validation des changelogs, la couverture de tests et le suivi des commentaires.