Maîtrise des fusions Git - Éviter les problèmes de fusion

VérifiéPrudence

Apprenez un protocole de fusion sécurisé pour prévenir et résoudre les problèmes courants de fusion Git, en particulier avec le cache de GitHub Pages et les conflits de fichiers binaires.

Spar Skills Guide Bot
DeveloppementIntermédiaire
3025/07/2026
Claude CodeCursorWindsurfCopilot
#git#merge#github-pages#conflict-resolution#troubleshooting

Recommandé pour

Notre avis

Cette compétence fournit un protocole complet pour éviter et résoudre les problèmes de fusion Git, en particulier avec GitHub Pages, incluant la préparation, la fusion sécurisée, la validation post-fusion et le débogage des états bloqués.

Points forts

  • Fournit un protocole étape par étape pour des fusions sécurisées.
  • Inclut des solutions spécifiques pour le cache de GitHub Pages.
  • Offre des procédures de dépannage pour les états Git bloqués (rebase, verrous).
  • Propose des listes de contrôle avant et après fusion pour éviter les erreurs.

Limites

  • Nécessite une familiarité avec les commandes Git de base.
  • Ne couvre pas tous les cas de conflits complexes (ex: fichiers binaires volumineux).
  • Les solutions de contournement du cache GitHub Pages peuvent être temporaires.
Quand l'utiliser

Utilisez cette compétence lorsque vous devez fusionner des branches de manière fiable, en particulier si vous déployez sur GitHub Pages ou si vous rencontrez des problèmes de cache ou de conflits.

Quand l'éviter

Évitez de l'utiliser pour des fusions triviales sans conflit, ou si vous préférez un outil graphique de fusion (GUI) plutôt que des commandes manuelles.

Analyse de sécurité

Prudence
Score qualité90/100

The skill includes potentially destructive commands (hard reset, forced kill, file removal) that could cause data loss or system disruption if misused, but they are used in a legitimate troubleshooting context with warnings. No external network calls or data exfiltration.

Points d'attention
  • Uses git reset --hard, which discards uncommitted changes permanently.
  • Contains rm -f .git/index.lock, removing a lock file that could be in use if multiple git processes run.
  • Includes taskkill /f im git* and taskkill /f im GitHubDesktop.exe, force-killing git processes, potentially disrupting active operations.

Exemples

Fix merge conflict with main branch
I have a merge conflict between my feature branch and main. Can you help me resolve it step by step following the safe merge protocol?
Force rebuild GitHub Pages
My GitHub Pages site is not updating after push. How can I force a rebuild using the cache busting technique?
Abort stuck rebase
My git rebase is stuck in interactive mode. How do I abort it and clean up?

🚀 Skill: Git Merge Mastery - Evitar Problemas de Merge

Objetivo

Prevenir e resolver problemas comuns de git merge, especialmente com GitHub Pages.

Problemas Comuns Identificados

  1. Merge incompleto - Commits da feature branch não chegam no main
  2. Cache do GitHub Pages - HTML antigo persiste mesmo após updates
  3. Conflitos de arquivos binários - HTML/CSS com conflitos complexos
  4. Rebase travado - Git em estado inconsistent

📋 Protocolo de Merge Seguro

1. PRÉ-MERGE (Preparação)

# Verificar diferenças entre branches
git diff main..feature/nova-feature --name-only

# Verificar histórico
git log --oneline --graph --all --decorate -10

# Ensure clean working directory
git status
git checkout .

2. MERGE CORRETO (Passo a passo)

# 1. Atualizar main
git checkout main
git pull origin main

# 2. Fazer merge explícito
git merge feature/nova-feature --no-ff -m "feat: merge completo de feature/nova-feature"

# 3. Verificar conflitos
git status

# 4. Resolver conflitos se necessário
git checkout --theirs arquivo-conflitante.html
git add arquivo-conflitante.html

# 5. Finalizar merge
git commit -m "resolve: conflitos do merge"

3. PÓS-MERGE (Validação)

# Verificar se TODOS os commits chegaram
git log --oneline -5

# Verificar arquivos específicos
git show HEAD --name-only

# Testar localmente antes do push
python -m http.server 8000  # Verificar se funciona

🎯 Solução Para GitHub Pages Cache

Quando o GitHub Pages não atualiza:

# 1. Mudar nome do arquivo principal (FORÇA rebuild)
mv docs/index.html docs/dashboard-NOVO.html

# 2. Criar redirect simples
echo "<!DOCTYPE html><html><head><meta http-equiv='refresh' content='0; URL=./dashboard-NOVO.html'></head><body>Redirecting...</body></html>" > docs/index.html

# 3. Commit e push
git add docs/index.html docs/dashboard-NOVO.html
git commit -m "fix: força rebuild GitHub Pages com redirect"
git push

# 4. Após 5min, restaurar nome original
mv docs/dashboard-NOVO.html docs/index.html
git add docs/index.html
git commit -m "fix: restaura nome original após rebuild"
git push

🔧 Troubleshooting de Estados Travados

Git em rebase/interactive mode:

# Abortar rebase
git rebase --abort

# Resetar para estado limpo
git reset --hard origin/main

# Remover locks se necessário
rm -f .git/index.lock

Processos git travados (Windows):

# Matar processos git
taskkill /f /im git*

taskkill /f /im GitHubDesktop.exe

📊 Verificação de Sucesso

Após merge, verificar:

  1. ✅ GitHub Actions passando
  2. ✅ GitHub Pages atualizado (aguardar 2-5min)
  3. ✅ Testar URL atual com Ctrl+Shift+R (hard refresh)
  4. ✅ Confirmar que todos os arquivos da feature estão no main

⚠️ Checklists de Segurança

ANTES de fazer merge:

  • [ ] Backup dos arquivos importantes
  • [ ] Verificar diferenças entre branches
  • [ ] Testar feature branch localmente
  • [ ] Coordenar com time se aplicável

APÓS merge:

  • [ ] Verificar se build passa
  • [ ] Testar produção
  • [ ] Documentar mudanças
  • [ ] Informar stakeholders

🚨 Casos Especiais

Merge de grandes refactors:

# Fazer merge gradual
git merge feature/refactor --no-commit
# Verificar arquivo por arquivo
git status
git diff --cached
# Commit apenas quando confirmado
git commit -m "feat: merge seguro de refactor grande"

Rollback seguro:

# Reverter merge específico
git revert -m 1 MERGE_COMMIT_HASH

# Ou reset hard (cuidado!)
git reset --hard COMMIT_ANTERIOR

Lembrete: Sempre prefira merge --no-ff para manter histórico claro e evitar problemas com GitHub Pages!

Skills similaires