Git - comment corriger le rebase interactif "corrompu"?

j'ai réussi à créer un petit désordre dans mon dépôt git local. J'essayais de corriger une propagation cassée en utilisant le en suivant les instructions . Avant d'exécuter le "git commit --amend" (et après le git rebase --interactive) j'ai décidé que mes modifications étaient incorrectes et j'ai donc exécuté "git reset HEAD --hard". Pas une bonne idée, je vous le dis.

Maintenant, le rebase interactif semble être "coincé". Git affiche la branche courante comme (/REBASE-m). Chacun de commande (cd-rom .., ls, git rebase...) à l'intérieur de mon référentiel donne l'erreur suivante:

chat: .git/git rebase-fusion/tête de nom: Aucun fichier ou répertoire de

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 remettre la situation à l'état où elle était avant que je commence mon opération bien pensée rebase.

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 très bien.

j'utilise msysgit v1.7.0.2.

67
demandé sur Community 2010-09-10 17:37:24

10 réponses

on dirait que Git a essayé de supprimer le répertoire .git/rebase-merge mais n'a pas pu le supprimer complètement. Avez-vous essayé de copier ce dossier? Copiez aussi le dossier .git/rebase-apply s'il est présent.

57
répondu Martin Owen 2010-09-10 19:00:11

j'ai eu un problème similaire dû à une vim zombie.processus exe. Le tuer dans le Gestionnaire des tâches, suivi d'un git rebase --abort réparé.

80
répondu user584317 2011-01-21 10:37:10

avait le même problème à Eclipse. Impossible de rebaser= > avorter de Eclipse.

l'Exécution git rebase --abort à partir de Git Bash a Fonctionné pour moi.

7
répondu Praveen Hiremath 2014-04-04 06:46:29

sur Windows, si vous ne voulez pas ou ne pouvez pas redémarrer la machine Voir ci-dessous.

Processus d'Installation de l'Explorateur: https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

dans Process Explorer, trouver > poignée de fichier 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').

processus L'Explorateur mettra en évidence le processus en tenant un verrou sur le fichier (pour moi c'était 'grep').

tuer le processus et vous serez en mesure d'annuler l'action git de la manière standard.

5
répondu Darren Yeats 2015-03-27 10:32:03

Créer un fichier avec ce nom:

touch .git/rebase-merge/head-name

et que l'utilisation git rebase

3
répondu Tehila Dabush 2015-04-06 15:39:30

dans mon cas, c'était parce que J'avais ouvert le journal de SmartGit dans le projet git respectif et commandant Total dans le répertoire de projet respectif. Quand j'ai fermé les deux j'ai pu rebaser sans aucun problème.

plus j'y pense, plus je soupçonne Total commander, c'est à dire Windows posséder un verrou ouvert répertoire git rebase essayait de quelque chose.

Conseil D'ami: quand vous essayez de réparer quelque chose, toujours faire un changement à un temps. ;)

1
répondu meridius 2016-03-09 08:58:10

une fois que vous avez terminé de façon satisfaisante le rebasage du nombre X de commits , la dernière commande doit être git rebase --continue . Cela termine le processus et sort du mode rebase .

0
répondu diptia 2013-11-21 23:10:38

j'ai eu le même problème. J'ai utilisé process explorer comme suggéré dans d'autres post (Je ne suis pas en mesure de trouver ce post) et compris quel processus a un verrou sur le fichier et le tuer. puis exécuter le -- Continuer ou -- abandonner selon les besoins

0
répondu user3739537 2014-07-09 00:38:37

dans mon cas après avoir testé toutes ces options et ayant toujours des problèmes j'ai essayé sudo git rebase --abort et il a fait le tout

0
répondu Dani.Rangelov 2016-05-03 13:34:54

j'utilise git dans eclipse et j'avais le même problème.

finalement j'ai trouvé que le " Rebase ..."l'entrée de menu a été temporairement transformée en sous-menu.

De L'Équipe-> Rebase -> Abort

ça a marché pour moi.

-1
répondu Shiva Agrawal 2014-10-14 12:57:15