J'ai réussi à créer un petit désordre dans mon référentiel git local. J'essayais de réparer un commit bloqué en utilisant le instructions suivantes . Avant d'exécuter "git commit --amend" (et après la réplication de git --interactive), j'ai décidé que mes modifications étaient incorrectes et j'ai donc exécuté "git reset HEAD --hard". Ce n'est pas une bonne idée, je vous le dis.
Maintenant, la base interactive semble être "bloquée". Git affiche la branche actuelle sous la forme (| REBASE-m). Chaque commande (cd .., ls, git rebase ...) dans mon référentiel génère l'erreur suivante:
cat: .git/rebase-merge/head-name: aucun fichier ou répertoire de ce type
Voici à quoi ressemble git rebase --abort:
$ git rebase --abort
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/head-name: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/orig-head: No such file or directory
HEAD is now at 4c737fb Revert "Modified file names"
rm: cannot remove `c:/_work/project/src/git/.git/rebase-merge/done': Permission denied
rm: cannot remove directory `c:/_work/project/src/git/.git/rebase-merge': Directory
not empty
cat: .git/rebase-merge/head-name: No such file or directory
Voici le résultat de git rebase --continue:
$ git rebase --continue
cat: c:/_work/project/src/git/.git/rebase-merge/prev_head: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/end: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/msgnum: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/onto: No such file or directory
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory
prev_head must be defined
cat: .git/rebase-merge/head-name: No such file or directory
Des idées? Je voudrais rétablir la situation telle qu'elle était avant que je commence mon opération de réassurance bien pensée.
Voici comment git log --oneline montre la situation:
4c737fb Revert "Modified file names"
247ac02 Modified file names
33141e6 Message modifications
10a4a04 Modified db script
Et c'est bon.
J'utilise msysgit v1.7.0.2.
Il semblerait que Git ait essayé de supprimer le répertoire .git/rebase-merge
mais n’ait pas réussi à le supprimer complètement. Avez-vous essayé de copier ce dossier? Copiez également le dossier .git/rebase-apply
s'il est présent.
J'ai eu un problème similaire en raison d'un processus zombie vim.exe. Le tuer dans le Gestionnaire des tâches, suivi d'un git rebase --abort
, le corrigeait.
Avait le même problème dans Eclipse. Impossible de redistribuer => abandonner Eclipse.
Exécuter git rebase --abort de Git Bash a fonctionné pour moi.
Sous Windows, si vous ne souhaitez pas ou ne pouvez pas redémarrer l'ordinateur, voir ci-dessous.
Installez Process Explorer: https://technet.Microsoft.com/en-us/sysinternals/bb896653.aspx
Dans Process Explorer, Rechercher> File Handle ou DLL ...
Tapez le nom de fichier mentionné dans l'erreur (pour mon erreur c'était 'git-rebase-todo' mais dans la question ci-dessus, 'done').
Process Explorer va mettre en évidence le processus qui maintient un verrou sur le fichier (pour moi, c'était 'grep').
Tuez le processus et vous pourrez annuler l'action git de la manière habituelle.
Créez un fichier avec ce nom:
touch .git/rebase-merge/head-name
et que d'utiliser git rebase
Merci @Laura Slocum pour votre réponse
J'ai tout gâché en rebasant et j'ai eu un HEAD détaché avec un
error: could not read orig-head
cela m'a empêché de finir le rebasement.
Le détaché HEAD semble contenir exactement le bon état souhaité pour la base, alors j’ai lancé
rebase --quit
et après cela, j'ai vérifié une nouvelle branche temporaire pour la lier à la tête détachée.
En la comparant à la branche que je voulais rebaser, je peux voir que la nouvelle branche temporaire est exactement dans l'état que je voulais atteindre. Merci
Dans mon cas, eighter git rebase --abort
et git rebase --continue
lançaient:
erreur: impossible de lire '.git/rebase-apply/head-name': aucun fichier ou répertoire de ce type
J'ai réussi à résoudre ce problème en supprimant manuellement: le répertoire .git\rebase-apply
.
Dans mon cas, c’était parce que j’avais ouvert le journal SmartGit dans le projet Git respectif et Total Commander dans le répertoire du projet correspondant. Quand j'ai fermé les deux, j'ai pu rebaser sans problème.
Plus j'y pense, plus je soupçonne Total Commander, c.-à-d. Que Windows ait un verrou sur le répertoire ouvert que Git Rebase essayait de résoudre.
Conseil amical: lorsque vous essayez de réparer quelque chose, effectuez toujours les changements les uns après les autres. ;)
Avec Sublime Text 3 sous Windows, le problème est résolu en fermant simplement les fenêtres Sublime utilisées pour l'édition de validation interactive.
Une fois que vous avez terminé de manière satisfaisante la refonte du nombre X de validations, la dernière commande doit être git rebase --continue
. Cela termine le processus et sort du mode rebase.
J'utilise git version 2.19.2.windows.1
.
la seule chose qui a fonctionné pour moi a été de supprimer le répertoire .git/rebase-apply/
et de créer un git reset --hard
.
J'ai essayé toutes les étapes mentionnées ci-dessus mais rien n'a fonctionné pour moi. Enfin, redémarrage l'ordinateur a fonctionné pour ce problème: D
Je me suis retrouvé coincé là-dedans. J'ai créé le fichier de nom de tête, puis une autre erreur s'est produite, indiquant qu'il ne pouvait pas trouver le fichier sur. J'ai donc créé ce fichier. Ensuite, j'ai obtenu une erreur une autre en disant qu'il était impossible de lire '.git/rebase-apply/on': aucun fichier ni répertoire de ce type.
Alors, j’ai consulté la documentation de git documentation pour trouver une nouvelle base et trouvé une autre commande appelée git rebase --quit
. Cela me ramena sur ma branche sans changement et je pouvais recommencer ma base, comme neuve.
J'ai eu le même problème. J'ai utilisé le processus Explorer comme suggéré dans un autre message (je ne parviens pas à trouver ce message) et j'ai découvert quel processus verrouille le fichier et le tue. puis exécutez les commandes --continue ou --avort selon les besoins
essayé tout le reste sauf un redémarrage, ce qui a fonctionné pour moi est rm -fr .git/REBASE_HEAD
Dans mon cas, après avoir testé toutes ces options et toujours eu des problèmes, j'ai essayé Sudo git rebase --abort
et tout a été fait.