Comment utiliser le rebase interactif de Git avec un référentiel local uniquement (pas de remote / origin)?

J'utilise git comme un système de contrôle de source local principalement pour l'historique et le suivi des diff. Je veux toujours utiliser rebase pour faire fixup / squash sur les commits WIP que je vais faire périodiquement. Quand j'essaie de faire git rebase -i cependant, j'obtiens ce qui suit:

There is no tracking information for the current branch.
Please specify which branch you want to rebase against.
See git-rebase(1) for details

    git rebase <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=<remote>/<branch> MyBranch

Il semble que git ne s'attend pas à ce que vous utilisiez un rebase interactif sans une télécommande en amont? Comment je fais cela ?

29
demandé sur mcw0933 2015-06-03 19:03:22

2 réponses

git rebase -i en raccourci, sans spécifier de branche de destination, git supposera que vous essayez de rebaser une branche distante suivie par votre branche. C'est pourquoi le message d'erreur mentionne des choses sur les télécommandes.

Lorsque vous spécifiez une cible, git se rebase contre cette commit-ish:

git rebase -i <commit-ish>
26
répondu Sébastien Dawans 2015-06-03 20:06:50

Donc en bref - si vous avez 3 commits locaux et que vous voulez maintenant les rebaser/squash/etc de manière interactive:

git rebase -i HEAD~3

(Voir l'explication de Sébastien !)

15
répondu MikeW 2016-11-24 11:02:23