web-dev-qa-db-fra.com

git rebase fatal: Nécessite une seule révision

J'ai une branche d'un référentiel public et j'essaie de mettre à jour ma branche avec les commits actuels du référentiel d'origine:

$ git fetch <remote>
remote: Counting objects: 24, done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 20 (delta 12), reused 0 (delta 0)
Unpacking objects: 100% (20/20), done.
From git://github.com/path_to/repo
  9b70165..22127d0  master     -> $/master
$ git rebase <remote>
fatal: Needed a single revision
invalid upstream <remote>

Le <remote> est à la place de mon nom de télécommande et n'est pas réellement mon nom de télécommande. La documentation sur cette erreur semble être un peu lâche.

136
jrlmx2

Vous devez fournir le nom d'une branche (ou un autre identifiant de validation), et non le nom d'une personne distante à git rebase.

Par exemple.:

git rebase Origin/master

ne pas:

git rebase Origin

Remarque, bien que Origin devrait résoudre la référence Origin/HEAD lorsqu’il est utilisé comme argument dans lequel une référence de validation est requise, il semble que tous les référentiels n’obtiennent pas une telle référence, de sorte que cela peut ne pas fonctionner (et dans votre cas ne fonctionne pas). C'est payant d'être explicite.

110
CB Bailey

Vérifiez que vous avez orthographié le nom de la branche correctement . Je rebasais une branche d'histoire (c'est-à-dire branch_name) et j'ai oublié la partie histoire. (c'est-à-dire story/branch_name) puis git crache cette erreur qui n'a pas beaucoup de sens dans ce contexte.

24
ChrisJF

Je me suis heurté à cela et j'ai réalisé que je n'avais pas récupéré l'amont avant d'essayer de me rebaser. Tout ce dont j'avais besoin était de git fetch upstream 

18

Le problème est que vous avez ouvert une branche hors de ... où vous essayez de vous baser sur. Vous ne pouvez pas redéfinir la base sur une branche qui ne contient pas le commit sur lequel votre branche actuelle a été créée à l'origine.

Je l’ai eu quand j’ai rebaptisé une branche locale X en un Y poussé, puis que j’ai essayé de rebaser une branche (créée d’abord sur X) en un Y poussé.

Résolu pour moi en rebasant sur X.

Je n'ai pas de problème à modifier les bases de branches distantes (potentiellement même pas extraites), à condition que ma branche actuelle provienne d'un ancêtre de cette branche.

10
Maitreya

Pour Origin à distance:

$ echo "ref: refs/remotes/Origin/master" > .git/refs/remotes/Origin/HEAD
0
Jani