web-dev-qa-db-fra.com

git: fatal: impossible de changer de branche en '12382' non valide

Un autre membre de mon équipe a créé une nouvelle branche git, engagée et poussée vers la télécommande habituelle avec laquelle nous travaillons. Lorsque j'essaie de vérifier cette branche, je reçois ceci:

% git checkout 12382
fatal: Cannot switch branch to a non-commit '12382'

Je n'ai pas eu de difficulté à vérifier les autres branches de ce référentiel; essayé de vérifier un autre après tout de suite (celui que je n'ai pas eu une copie locale de), et cela a bien fonctionné.

J'ai essayé de créer un serveur avec cette branche sur notre pipeline Go. Cela a bien fonctionné - ce qui signifie que le serveur a réussi à vérifier cette branche.

J'ai essayé ceci pour vérifier l'état des choses:

% git remote show Origin
* remote Origin
  Fetch URL: [email protected]:mycompany/myrepository.git
  Push  URL: [email protected]:mycompany/myrepository.git
  HEAD branch: stage
  Remote branches:
    10112                     tracked
    10198                     tracked
    10678                     tracked
...
    12382                     tracked    <<<---
...
  Local branches configured for 'git pull':
...
  Local refs configured for 'git Push':
...

Quelqu'un pourrait-il suggérer comment résoudre ce problème? Qu'est ce qui ne s'est pas bien passé?

17
zaphodb

Git est confus, car 12382 ressemble à un hachage de commit. Utilisez le nom complet pour vérifier la succursale:

git checkout refs/heads/12382 --

ou, s'il s'agit d'une branche distante:

git checkout refs/remotes/Origin/12382 --
20
knittl

@knittl: merci qui a fonctionné, a dû effectuer les étapes supplémentaires suivantes:

% git checkout refs/remotes/Origin/12382
Note: checking out 'refs/remotes/Origin/12382'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 2d834e4... 

% git branch | grep 12382
* (detached from Origin/12382)

% git checkout -b 12382
Switched to a new branch '12382'

% git status
On branch 12382
nothing to commit, working directory clean

% git Push --set-upstream Origin 12382
Branch 12382 set up to track remote branch 12382 from Origin.
Everything up-to-date
11
zaphodb

La question est un cas Edge et il a déjà été répondu.

Je vais répondre à l'erreur à un niveau plus général:


Pour pouvoir basculer/extraire à quelque chose dans votre arbre source, il doit être de type: 

  • commit: git checkout: 90392aeda17d730d472493bc5a36237407c80979 ou peut-être juste faire les 7 premiers chiffres `` git checkout: 90392ae`
  • tag git checkout V2.0.3
  • branche (branches distantes aussi) git checkout newLogin
  • HEAD git checkout HEAD^1
  • Hash, Hash court.

Donc, si vous passez à quelque chose qui n'en est aucune, comme si vous avez mal entré le nom de votre branche, git vous donnerait cette erreur.

Impossible de changer de branche en non-commit signifie que vous essayez de récupérer en quelque chose qui n'est pas tree-ish

0
Honey