Git - Comment fixer “corrompu” rebase interactif?
J'ai réussi à créer un peu de désordre dans mon dépôt git local. J'ai essayé de réparer la validation à l'aide de la 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 ont été incorrect et j'ai donc exécuté "git reset --hard HEAD". Pas une bonne idée, je vous le dis.
Maintenant le rebase interactif semble être "coincé". Git montre le courant de la branche (|REBASE-m). Chaque commande (cd .., 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 comment git rebase --abort ressemble:
$ 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 la commande 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éinitialiser la situation de retour à l'état où elle était avant j'ai commencé mon bien pensé rebase opération.
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.
Je suis en utilisant msysgit v1.7.0.2.
Vous devez vous connecter pour publier un commentaire.
Il ressemble à Git essayé de supprimer les
.git/rebase-merge
répertoire, mais n'était pas capable de l'enlever complètement. Avez-vous essayé de copier ce dossier à l'écart? Également copier loin le.git/rebase-apply
dossier si c'est présent.git rebase --abort
(à partir de stackoverflow.com/a/4757777/146044) ne de travail.git rebase --abort
ne fonctionnait pas)git rebase --abort
il a effacé mon unstaged changements... l'erreur a disparu maisgit rebase --abort
encore m'a donné les erreurs.git rebase --quit
a fonctionné pour moi.J'ai eu un problème similaire en raison d'un zombie vim.exe processus.
Le tuer dans le Gestionnaire des Tâches, suivi par un
git rebase --abort
il fixe.handle
de commande et vu qu'un processus (sh.exe) a verrouillé le fichier. À l'aide depskill <pid>
fixe pour moi.Je me suis coincé dans cette. J'ai créé le tête-nom de fichier, puis j'ai couru dans une autre erreur disant qu'il ne pouvait pas trouver sur le fichier, j'ai donc créé ce fichier. Puis j'ai eu un autre d'erreur disant ne pouvait pas lire".git/git rebase-appliquer/sur': Aucun fichier ou répertoire.
Donc j'ai regardé le git la documentation pour la relocalisation et trouvé une autre commande appelée
git rebase --quit
. Cette série m'a remis à ma branche avec pas de changements, et je pourrais commencer mon rebase maintes fois, comme neuf.git rebase --quit
était!Eu le même problème dans Eclipse. Ne pouvait pas Rebase=>abandonner depuis Eclipse.
L'exécution de git rebase --abort à partir de Git Bash a Fonctionné pour moi.
Sur Windows, si vous sont pas en mesure ou refuse de redémarrer la machine, voir ci-dessous.
Installer Process Explorer: https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
Dans Process Explorer, Trouver > descripteur de Fichier ou une DLL ...
Tapez le nom de fichier mentionné dans le message d'erreur (pour mon erreur, c'était 'git-git rebase-todo", mais dans la question ci-dessus, 'fait').
Process Explorer mettra en évidence les processus de maintien d'un verrou sur le fichier (pour moi c'était 'grep').
Tuer le processus, et vous serez en mesure d'annuler la commande git d'action de la manière standard.
Créer un fichier avec ce nom:
et que l'utilisation
git rebase
Dans mon cas eighter
git rebase --abort
etgit rebase --continue
jetait:J'ai réussi à résoudre ce problème en supprimant manuellement:
.git\rebase-apply
répertoire.Une fois que vous avez complété de façon satisfaisante changement d'année de base X nombre de commits , la dernière commande doit être
git rebase --continue
. Qui termine le processus et les sorties de rebase mode .Dans mon cas, c'était parce que j'avais ouvert SmartGit du Journal dans le projet Git et Total commander dans le répertoire du projet. Quand j'ai fermé les deux, j'ai été en mesure de rebase 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.
Conseils d'amis: Lorsque vous essayez de réparer quelque chose, toujours faire un changement à la fois. 😉
Avec SublimeText 3 sur Windows, le problème est résolu en fermant la Sublime windows utilisé pour interactive commettre édition.
J'ai eu le même problème. J'ai utilisé l'explorateur de processus comme suggéré dans d'autres post (je ne suis pas en mesure de trouver ce post) et compris le processus qui a un verrou sur le fichier et de le tuer. ensuite, exécutez l' --continuer ou --abort selon les besoins
Dans mon cas, après l'essai de toutes ces options, et encore avoir des problèmes, j'ai essayé
sudo git rebase --abort
et il fait toute choseJe suis en utilisant
git version 2.19.2.windows.1
.la seule chose qui a fonctionné pour moi a été de retirer le
.git/rebase-apply/
répertoire et faire ungit reset --hard
.J'ai essayé toutes les étapes ci-dessus mentionné, mais rien n'a fonctionné pour moi. Enfin, redémarrage l'ordinateur travaillé pour ce problème 😀
essayé tout le reste, mais un redémarrage, ce qui a fonctionné pour moi est
rm -fr .git/REBASE_HEAD
Merci @Laura Slocum pour votre réponse
J'ai gâché les choses alors que le rebasage et a obtenu un décollement de la TÊTE avec un
qui m'a empêché de finir l'année de référence.
Le détaché de la TÊTE semblent contenir précisément ma correcte rebase l'état désiré, alors j'ai couru
et après que j'ai vérifié une nouvelle temp direction générale de la lier à l'détaché de la tête.
En la comparant avec la direction que je voulais rebase, je peux voir la nouvelle temp branche est exactement dans l'état que je voulais atteindre.
Grâce
Je suis à l'aide de git dans eclipse et j'ai eu le même problème.
Finalement, j'ai trouvé que le "Rebase ..." du menu contextuel de l'entrée a été temporairement transformé en un sous-menu.
Équipe-> git Rebase -> Abandonner
Il a travaillé pour moi.