33 votes

Problèmes avec Git - rebase / squash

J'essaie d'écraser quelques commits dans un dépôt git.

> git rebase -i HEAD~3

Successfully rebased and updated refs/heads/staging.

Un fichier s'ouvre, intitulé git-rebase-todo :

pick a2f3467 Require statement incorrect
pick c41212e Require file in environment
pick 2743221 This should work

# Rebase c5f42f3..2743221 onto c5f42f3
# ..........

J'ai essayé de changer les deux derniers commits en squash de pick . Je sauvegarde le fichier et j'obtiens l'erreur suivante :

Unable to save ~/Documents/code/myapp/.git/rebase-emrge/git-rebase-todo

62voto

Michael Wild Points 6612

Le problème est que lorsque sublimetext2 est lancé, il ne bloque pas et revient immédiatement. Git pense alors que vous avez fini d'éditer le fichier et effectue le rebasement. C'est pourquoi vous voyez le

Successfully rebased and updated refs/heads/staging

avant même d'avoir édité le fichier. Utilisez le subl à la place, qui est conçue pour une telle utilisation. Le site aide github vous dit de le configurer avec

git config --global core.editor "subl -n -w"

1voto

Alkarin Points 150

Dans mon expérience, le problème était dû aux privilèges de l'utilisateur.

Si vous recevez Could not find the file "~/../../git-rebase-todo" erreur lors de l'enregistrement du fichier, essayez de l'exécuter en tant que sudo :

sudo git rebase -i HEAD~3

Cependant, n'oubliez pas que cela peut changer le propriétaire des fichiers concernés.

0voto

yormen Points 143

J'ai eu des problèmes similaires en utilisant vs code, vous pouvez essayer dans votre terminal...

git config --global core.editor "code -n --wait"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X