1 min read

Git : Dangling commit/could not read (xyz commit)

Une solution inidéal mais simple, c'est de forcer une version plus recent sur tous les copies de dépôt. L'histoire des commits sera perdu.

Sauvegarde le .git au cas où :

Windows powershell

# aller à la racine du dépôt
Set-Location (git rev-parse --show-toplevel)

# sauvegarde .git et arbre de travail
Copy-Item -Recurse -Force .git ".git.backup.$((Get-Date).ToString('yyyyMMddHHmmss'))"
robocopy . ..\worktree-backup /MIR /XD .git

Linux bash

# aller à la racine du dépôt
cd "$(git rev-parse --show-toplevel)"

# sauvegarde .git et arbre de travail
cp -a .git ".git.backup.$(date +%Y%m%d%H%M%S)"
tar -czf ../worktree-backup.tar.gz --exclude='.git' .

Copier tous les fichers dans le répertoire local de la branche problèmatique et les placer temporairement dans un autre répertoire dehors le répertoire du dépôt

Puis créer une branche d'orphelin:

git switch --orphan fresh

Coller les fichers dans le répertoire local de repairbranch, et créer un commit unique à partir de l'état local et pousser vers le remote comme une nouvelle branche :

git add -A
git commit -m "Forced repair : accepted state (single commit)"
git push -u origin repair1 --force-with-lease