Git: impossible de retirer la branche - erreur: pathspec '…' ne correspond à aucun fichier connu de git

706

Je ne sais pas pourquoi je ne peux pas commander une succursale sur laquelle j'avais travaillé plus tôt. Voir les commandes ci-dessous (note: coest un alias pour checkout):

ramon@ramon-desktop:~/source/unstilted$ git branch -a
* develop
  feature/datts_right
  feature/user_controlled_menu
  feature/user_controlled_site_layouts
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/feature/datts_right
  remotes/origin/master
ramon@ramon-desktop:~/source/unstilted$ git co feature/user_controlled_site_layouts 
error: pathspec 'feature/user_controlled_site_layouts' did not match any file(s) known to git.

Je ne sais pas ce que cela signifie, et je n'arrive pas à trouver quoi que ce soit que je puisse comprendre sur Google.

Comment puis-je extraire cette branche et qu'ai-je pu faire pour rompre cela?

MISE À JOUR :

J'ai trouvé ce post , et courir git show-refme donne:

97e2cb33914e763ff92bbe38531d3fd02408da46 refs/heads/develop
c438c439c66da3f2356d2449505c073549b221c1 refs/heads/feature/datts_right
11a90dae8897ceed318700b9af3019f4b4dceb1e refs/heads/feature/user_controlled_menu
c889b37a5ee690986935c9c74b71999e2cf3c6d7 refs/heads/master
c889b37a5ee690986935c9c74b71999e2cf3c6d7 refs/remotes/origin/HEAD
e7c17eb40610505eea4e6687e4572191216ad4c6 refs/remotes/origin/develop
c438c439c66da3f2356d2449505c073549b221c1 refs/remotes/origin/feature/datts_right
c889b37a5ee690986935c9c74b71999e2cf3c6d7 refs/remotes/origin/master
23768aa5425cbf29d10ff24274adad42d90d15cc refs/stash
e572cf91e95da03f04a5e51820f58a7306ce01de refs/tags/menu_shows_published_only
429ebaa895d9d41d835a34da72676caa75902e3d refs/tags/slow_dev

MISE À JOUR sur le .gitrépertoire (se user_controlled_site_layoutstrouve dans refs/heads/feature folder):

$ ls .git/refs/heads/feature/
datts_right  user_controlled_menu  user_controlled_site_layouts
$ cat .git/refs/heads/feature/user_controlled_site_layouts
3af84fcf1508c44013844dcd0998a14e61455034

MISE À JOUR le git show 3af84fcf1508c44013844dcd0998a14e61455034

$ git show 3af84fcf1508c44013844dcd0998a14e61455034
commit 3af84fcf1508c44013844dcd0998a14e61455034
Author: Ramon Tayag <[email protected]>
Date:   Thu May 12 19:00:03 2011 +0800

    Removed site layouts migration

diff --git a/db/schema.rb b/db/schema.rb
index 1218fc8..2040b9f 100755
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended to check this file into your version control system.

-ActiveRecord::Schema.define(:version => 20110511012647) do
+ActiveRecord::Schema.define(:version => 20110503040056) do

   create_table "attachments", :force => true do |t|
     t.string   "name"
@@ -205,15 +205,6 @@ ActiveRecord::Schema.define(:version => 20110511012647) do
     t.integer  "old_id"
   end

-  create_table "site_layouts", :force => true do |t|
-    t.string   "name"
-    t.text     "description"
-    t.text     "content"
-    t.integer  "site_id"
-    t.datetime "created_at"
-    t.datetime "updated_at"
-  end
-
   create_table "site_styles", :force => true do |t|
     t.text     "published"
     t.datetime "created_at"
Ramon Tayag
la source
Cela pourrait-il aider? stackoverflow.com/questions/2527355/…
Boldewyn
Est-ce que ça marche si vous faites git checkout refs/heads/user_controlled_site_layouts:?
Mark Longair,
2
Mark - non, obtenez toujours la même erreur.
Ramon Tayag
1
En voyant votre mise à jour, je ne sais pas comment vous avez une branche qui apparaît git branch -amais pas dans git show-ref. Le fichier .git/refs/heads/feature/user_controlled_site_layoutexiste-t-il réellement? Si oui, qu'est-ce que cela cat .git/refs/heads/feature/user_controlled_site_layoutdonne?
Mark Longair
1
J'ai la même erreur, j'ai créé la branche à partir d'un autre référentiel et j'essaie de retirer cette branche vers un autre référentiel. Je l'ai donc obtenu à cause des différents dépôts.
Kushan Gunasekera

Réponses:

947

Essayer git fetch pour que votre dépôt local obtienne toutes les nouvelles informations de github. Il prend simplement les informations sur les nouvelles branches et aucun code réel. Après cela, cela git checkoutdevrait bien fonctionner.

MarkoHiel
la source
19
Pour plus de précisions, git fetchest utile lorsque vous devez synchroniser votre référentiel local avec le référentiel distant, mais que vous ne souhaitez pas fusionner les modifications dans votre dossier de travail.
Mark Lakata
138
Dans le cas d'un clone avec plusieurs télécommandes, le git checkout Branchne fonctionne pas. Avec plusieurs télécommandes, le nom de la branche est ambigu et nécessite la spécification de remote / branch. La commande git checkout -b branch remote/branchfonctionne dans ce scénario.
Umair Ishaq
1
J'avais réussi à créer un "maître" local d'une manière ou d'une autre, donc bien que "git fetch" me rapproche, je devais d'abord supprimer mon maître local ("git branch -d master"), avant de passer au maître distant ("git checkout Maître"). Au cas où cela aiderait quelqu'un d'autre aussi idiot que moi!
Jamie Brown
1
@ Aleks ce n'est pas la réponse acceptée car cela n'a rien à voir avec la question du PO. Il ne pouvait plus extraire une branche qu'il avait précédemment extraite (c'est-à-dire créée) localement . Ce n'est pas parce que d'autres personnes ayant un problème différent et beaucoup plus basique ont trouvé et voté cette réponse (qui est complètement triviale et bien connue de tout utilisateur de git ayant plus de deux jours d'expérience) que l'OP devrait l'accepter.
Michael Johnston
11
git fetchpourrait faire le travail. Mais il peut ne pas obtenir toutes les branches à distance. Vous devez définir le modèle de correspondance d'extraction. git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"voir: stackoverflow.com/questions/11623862/…
Jichao
363

J'obtenais cette erreur lorsque j'ai essayé de commander une nouvelle branche:

erreur: pathspec 'BRANCH-NAME' ne correspond à aucun fichier connu de git.

Quand j'ai essayé git checkout origin/<BRANCH-NAME>, j'ai obtenu la tête détachée:

(détaché de l'origine /)

Enfin, j'ai fait ce qui suit pour résoudre le problème :

git remote update
git fetch 
git checkout --track origin/<BRANCH-NAME>
Mayank
la source
15
avec cette commande "checkout" j'ai ce message: fatal: impossible de mettre à jour les chemins et de passer à la branche 'foo' en même temps.
NEOline
1
Après avoir modifié manuellement l'adresse distante, je n'ai pas pu extraire de nouvelles succursales. "git remote update" semblait faire l'affaire.
Martin
sans la «mise à jour à distance git», cela ne fonctionnait pas. Merci!
Kristiyan Tsvetanov
git checkout --track origin/staging fatal: git checkout: --track and --no-track require -bgit version 1.5.6.5
Ivan Borshchov
Utilisé au lieu de la troisième commandegit checkout -b staging --track origin/staging
Ivan Borshchov
152

J'ai eu cette erreur pour une branche distante et sans branche de suivi locale. Même si je suis certain d'avoir vérifié les succursales distantes via un simple

git checkout feature/foo

dans le passé, pour contourner cette erreur, je devais

git checkout -t -b feature/foo origin/feature/foo

Je n'ai aucune idée de ce que j'ai fait pour me mettre dans cette situation non plus.

Gregory McIntyre
la source
1
Malheureusement, je ne l'ai pas poussé vers le serveur git distant.
Ramon Tayag
Cela a fonctionné pour moi. C'est arrivé sur git v 1.6 sur une machine FC10.
FractalSpace
26
Git devine généralement la branche distante à vérifier, mais lors de l'utilisation de plusieurs télécommandes, il semble qu'il ne puisse plus le faire. Source: makandracards.com/makandra/…
Elijah Lynn
1
faire git checkout / foo au lieu de simplement git checkout foo a fonctionné pour moi
Alejandro Moreno
cela a commencé à m'arriver (dans un dépôt avec de nombreuses télécommandes et des centaines de succursales à partir desquelles j'avais réussi à vérifier les succursales d'origine pendant 3 ans) et j'étais mystifié. Après inspection, j'ai découvert que j'avais ajouté une nouvelle télécommande et je l'avais fait avec copier / coller dans un éditeur de texte au lieu d'utiliser la commande git, et j'ai oublié de changer la fetch = +refs/heads/*:refs/remotes/origin/*ligne pour qu'elle corresponde au nouveau nom de la télécommande. LOL. Peut-être que cela est arrivé à makandra? car après l'avoir réparé, vérifier une fois de plus la branche l'obtient depuis son origine, même si j'ai de nombreuses télécommandes.
Michael Johnston
91

Si vous avez supprimé une branche avec git branch -D yourbranchnameet tiré / cloné à nouveau votre référentiel, vous devrez peut-être recréer votre branche locale.

Essayer:

git checkout -b yourbranchname
Francisco Alvarez
la source
cette option fonctionne toujours, même là où les fichiers sont déjà modifiés et vous souhaitez les pousser vers la branche nouvellement créée.
Nerius Jok
C'était un commentaire utile parce que même si je partageais le même problème / question que le PO ici, les réponses fournies supposaient une situation simple. Malheureusement, dans ma situation, j'avais précédemment créé UNIQUEMENT une branche locale, puis supprimée comme indiqué ici par @Francisco Alvarez, donc peu importe comment j'ai essayé les autres solutions ici, je ne pouvais pas tirer la nouvelle branche distante. Cette réponse a sauvé mon bacon.
David
61

J'ai les mêmes questions et j'ai obtenu des informations à partir de ce lien: git fetch ne récupère pas toutes les branches

Alors maintenant, je ne sais pas comment cette situation s'est produite, au moins nous pouvons la résoudre:

Étape 1. Vérifiez votre paramètre "remote.origin.fetch", devrait être comme ceci

$ git config --get remote.origin.fetch

+ refs / heads / private_dev_branch: refs / télécommandes / origine / private_dev_branch

Étape 2. Modifiez "remote.origin.fetch" pour tout récupérer

$ git config remote.origin.fetch "+ refs / heads / *: refs / remotes / origin / *"

$ git config --get remote.origin.fetch

+ refs / têtes / *: refs / télécommandes / origine / *

Ensuite, vous pouvez essayer "git pull" (peut-être que "git fetch origin" fonctionne aussi mais je n'ai pas essayé) pour obtenir toute la branche.

bearzyj
la source
@onionjake a raison, désolé de ne pas avoir vérifié les questions dans tous les détails. J'ai juste reçu les mêmes messages d'erreur en essayant la même action de "git checkout <existed_branch>", mais différent du problème de l'expéditeur en fait ----- l'expéditeur pouvait voir la branche localement alors que je ne peux pas. Ma réponse peut résoudre le problème pour qui n'a pas récupéré toutes les branches à l'avance. Mais pas la situation pour le problème du créateur.
bearzyj
3
Beaucoup de gens, y compris moi, reçoivent cette erreur, car ils peuvent cloner un dépôt avec l'indicateur --branch, par conséquent, même après git fetch, ils n'obtiennent pas d'autres branches et ne peuvent rien retirer de la télécommande. Cela résout ce problème. Merci!
Orif Khodjaev le
Merci beaucoup. J'utilisais l'image de docker devel de tensorflow, et cela limite la branche à une certaine version. Après avoir configuré la configuration de l'extraction, je peux maintenant passer à la caisse.
Michael_Zhang
24

Les utilisateurs de Git Windows se méfient - sans le paramètre--icase-pathspecs ou GIT_ICASE_PATHSPECS = 1 env var, les paramètres de chemin git seront sensibles à la casse, auquel cas

git checkout origin/FooBranch "Some/Path/To/File.txt"

n'est pas la même chose que

git checkout origin/FooBranch "some/path/to/file.Txt"
StuartLC
la source
1
Une chose à noter qui n'était pas claire dans la documentation est que le --icase-pathspecsparamètre doit venir en premier ou au moins avant-C <path>
sonyisda1
21

Si le nom de la branche et que vous n'avez aucun fichier non engagé, essayez ceci

git fetch && git checkout <branch name>
Sajin M Aboobakkar
la source
Cela ne semble pas du tout lié à la question?
onionjake
J'ai le même problème mentionné ci-dessus, résolu en utilisant les commandes suivantes
Sajin M Aboobakkar
19

J'ai rencontré le problème lors du changement de succursale.

J'ai fait un git pull sur la branche actuelle, puis j'ai essayé de vérifier la nouvelle et cela a fonctionné

git pull // on your old branch git checkout <new_branch>

Ankit Marothi
la source
Vraiment utile :)
vikifor
Pourquoi cela fonctionnerait-il? Ne git pullfaire plus que tirer la branche actuelle?
Cameron Hudson
Il s'agit peut-être simplement d'un cas que vous essayez d'extraire d'une branche créée par quelqu'un d'autre et qui n'est pas encore extraite de votre référentiel actuel.
Ankit Marothi
15
git pull

Cela m'a tout simplement arrangé :)

OpMt
la source
13

J'ai eu le même problème car j'ai utilisé git clone --depth=1, ce qui implique --single-branch.

Faire un terminé git clonele réparera.

Huachao Huang
la source
Merci de l'avoir signalé. C'est exactement le même problème auquel j'étais confronté. Merci
Mukesh Kumar
Un clone complet peut ne pas être requis. Si la branche est créée par quelqu'un d'autre APRÈS avoir cloné le référentiel à l'origine, vous obtenez cette erreur car votre référentiel local ne dispose d'aucune information sur cette nouvelle branche. Passez simplement en master et faites un git pull. Essayez ensuite de retirer la nouvelle branche.
Yasin
12

Je l'ai obtenu lorsque j'ai fait ce qui suit:

  • IntelliJ IDE utilisé, connecté à git
  • Créé un nouveau fichier et ajouté à git
  • Renommé le nouveau fichier

Lorsque j'ai essayé de vérifier dans le répertoire, j'ai eu cette erreur.

Pour corriger:

J'ai ouvert le dépôt dans les extensions git. J'ai vu que le fichier (avec l'ancien nom) était mis en scène. Mais comme elle n'existait plus, elle ne pouvait pas être engagée.

J'ai simplement décortiqué ce fichier.

Ensuite, j'ai rajouté le fichier (cette fois correctement nommé) dans git et commis sans erreur.

Somaiah Kumbera
la source
Le plus drôle, c'est qu'il fonctionne toujours avec TortoiseGit même s'il ne fonctionne pas dans Intellij
Marian Klühspies
3
Cela m'a beaucoup aidé. J'ai utilisé SourceTree pour trouver ce f * ck r d'un fichier et le décompresser.
Vinchenzo
10

J'ai eu ce problème aujourd'hui , je voulais git checkout fooet obtenuerror: pathspec 'foo' did not match any file(s) known to git.

Il s'avère que j'étais dans le mauvais dépôt . Donc, leçon apprise: vérifiez le repo que vous regardez avant de paniquer.

James Harrington
la source
Ha - oui c'était moi - a créé une branche dans Bitbucket à partir du ticket Jira, n'a pas remarqué qu'elle l'a créée dans un dépôt aléatoire
Keir
sidenote: Je travaillais avec plusieurs télécommandes, j'avais un ensemble correctement et l'autre pointant vers le mauvais repo. sooo. merci pour le rappel, je pouvais facilement voir mon problème quand j'ai fait une télécommande git -v
Dreamling
9

J'ai eu cette erreur en essayant de commander une succursale via:

git checkout branchX

que je n'avais pas vérifié avant. Cela ne fonctionnait que lors de la déclaration explicite de la télécommande:

git checkout --track origin/branchX

La raison en était que j'avais 2 télécommandes différentes (origine + sth. Else) configurées dans git config. Comme je n'avais pas besoin de la deuxième télécommande, je l'ai retirée et voila, cela a fonctionné. L'alternative pour définir la télécommande par défaut via:

checkout.defaultRemote=origin

N'a pas travaillé pour moi

RS1980
la source
J'ai ajouté cette réponse parce que toutes les autres réponses suggérées n'ont pas fonctionné pour moi, donc j'espère que cela aide quelqu'un qui a la même cause (2 télécommandes).
RS1980
8

Commencez par extraire la branche parent.

git fetch --all --prune 
git checkout <your branch>

J'espère que cela aide!.

Shradhey Tripathi
la source
8

Je l'ai corrigé en modifiant mon fichier de configuration git Vérifiez votre fichier de configuration dans votre répertoire git - .git\config

Il avait auparavant

[remote "origin"]
url = http://git.xyz.com/abc-group/pqr.git
fetch = +refs/heads/develop:refs/remotes/origin/develop

J'ai corrigé en le modifiant en

[remote "origin"]
url = http://git.xyz.com/abc-group/pqr.git
fetch = +refs/heads/*:refs/remotes/origin/*

Remarquez que la tête pointait vers une seule branche, donc elle ne pouvait pas trouver la référence aux autres branches existantes, je l'ai changée en * pour qu'elle vérifie tout à l'origine.

Dur
la source
Merci, mon pote, des heures d'efforts et finalement j'ai atterri avec votre solution.
Sunil Lulla
7

Sur Windows OS par défaut, git est installé avec

core.ignorecase = true

Cela signifie que les fichiers git repo seront insensibles à la casse, pour changer cela, vous devez exécuter:

\yourLocalRepo> git config core.ignorecase false

vous pouvez trouver cette configuration dans le fichier .git \ config

Vasile Bors
la source
7

J'ai copié l'origine distante urld'un autre .git/configfichier, ce qui fait que mon nouveau .git/configfichier manquait à la ligne suivante de la [remote "origin"]section

fetch = +refs/heads/*:refs/remotes/origin/*

Ajout au-dessus de la ligne fixe error: pathspec 'master' did not match any file(s) known to git.

AamirR
la source
6

J'ai eu le même problème .. Je pensais avoir nommé une branche foolorsque j'essaye de:

git checkout foo

Je recevais:

error: pathspec 'foo' did not match any file(s) known to git.

Ensuite, j'ai essayé le nom complet de la branche:

git checkout feature/foo

puis a travaillé pour moi.

tokhi
la source
5

Si cela se produit sous Windows, c'est probablement le problème de cas de nom de fichier.

J'ai eu cette erreur aujourd'hui - j'ai créé un nouveau fichier, ajouté à GIT, puis j'ai changé une lettre dans le nom de fichier de bas en haut et je n'ai rien pu faire - valider, revenir en arrière, supprimer le fichier du dépôt.

La seule solution que j'ai trouvée était de changer à nouveau le nom de fichier pour revenir exactement au même cas lorsque j'ai ajouté ce fichier à GIT, puis de faire GIT revert pour supprimer ce fichier de GIT, puis de changer à nouveau le nom de fichier comme je le souhaite. Après ces changements, je pouvais m'engager à repo puis pousser sans aucun problème.

Marcin Nabiałek
la source
Cela a aidé, mais il faut mentionner de faire le changement de nom via git mv. Je suppose que vous l'avez fait de cette façon, parce que le faire via mon IDE (IntelliJ PhpStorm) a échoué pour moi ...
Dennis98
5

Dans mon cas, j'ai DEUX branches 1) master (qui est pour le serveur live) 2) dev (serveur de test). J'avais configuré plusieurs télécommandes pour pousser le code sur le serveur respectif. Quand j'ai essayé de changer de branche, j'ai eu l'erreur commeerror: pathspec 'master' did not match any file(s) known to git.

Vous pouvez les voir par git remote -v. J'avais retiré une autre télécommande sauf une origintélécommande pargit remote remove <remote-name>

alors git fetch

Maintenant, je suis en mesure de commander par branche git checkout <branch-name>.

NiRmaL
la source
5

J'ai rencontré ce même problème lorsque je jouais avec git pour la première fois. Lors de la tentative de mon premier commit ...

git commit -m 'first commit!'

J'ai eu l'erreur mentionnée par l'OP ...

error: pathspec 'commit!'' did not match any file(s) known to git.

Je pensais que j'aurais pu confondre git en utilisant un mot-clé dans le message de validation, j'ai donc essayé quelques autres mots et j'ai reçu la même erreur.

Enfin, j'ai utilisé des guillemets doubles dans le message ...

git commit -m "first commit!"

Cela s'est avéré être un succès ...

[master (root commit) 0000000] first commit!
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 dummyDoc.txt
TheLastGIS
la source
5

J'avais fait une erreur idiote de ne pas fournir d'indicateur -m lors de la validation (lol arrive)

git commit -m "commit message in here"
Ajain Vivek
la source
même situation ici. oubliez juste "-m" obtenir le même msg d'erreur.
Niuya
5

J'avais une cause racine différente

J'ai eu un script qui recherche essentiellement toutes les branches correspondant à la clé de problème jira dans le "PRJ-1234" parmi toutes les branches pour exécuter une commande de vérification de la branche git sur la branche correspondante

Le problème dans mon cas était que 2 branches ou plus partageaient la même clé jira et ont donc provoqué l'échec de mon script avec l'erreur susmentionnée

En supprimant l'ancienne branche inutilisée et en vous assurant qu'une seule branche avait la référence de clé jira résolu le problème

Voici mon code au cas où quelqu'un voudrait l'utiliser

git remote update
git fetch --all --prune 
git branch -r --list *$1* | xargs git checkout --force

enregistrer cela sous switchbranch.sh

Ensuite, utilisez-le depuis le terminal ./switchbranch.sh PRJ-1234

Korayem
la source
Pour moi, c'était aussi le bon chemin / nom en amont et notamment pour récupérer toutes les balises distantes ainsi que "git fetch --all --tags --prune" trouver le bon nom: "git branch -a | grep some_upstream" avant de le vérifier avec le chemin complet comme "git checkout -f --track -b new_branch remotes / upstream / some_upstream_branch"
kisna
4

Aucune de ces réponses n'a résolu mon problème:

Nikolai@CALIGARI-7 ~/Documents/NetBeansProjects/Version (master)
$ git log --format=oneline
b9cc6a9078312865280fb5432a43e17eff03a5c6 Formatted README
288772f36befe6bd60dd41b8185f1e24e0119668 Updated README documentation
d2bdbe18f4169358d46fad50eacfb89786df3bf8 Version object v3.0.0-SNAPSHOT
a46b1910a3f548b4fa254a6055d25f68d3f217dd VersionFactory is now Platform agnostic
24179ae569ec7bd28311389c0a7a85ea7b4f9594 Added internal.Platform abstraction
252b684417cf4edd71aed43a15da2c8a59c629a7 Added IPlugin implementation for Sponge
e3f8d21d6cf61ee4fc806791689c984c149b45e3 Added IPlugin implementation for Bukkit
aeb403914310b4b10dee9e980cf64472e2bfda79 Refactored Version.java
ef50efcff700c6438d57f70fac30846de2747a7e Refactored TesterFactory
a20808065878d4d28657ae362235c837cfa8e625 Added IPlugin abstraction
9712a3575a70060d7ecea8b62bb5e888fdc32d07 Heavily refactored Tester
02d025788ae740dbfe3ef76a132cea8ca4e47467 Added generic Predicate<T> interface
9c565777abea9be6767dfdab4ab94ed1173750dd Minor refactoring of testCompareTo()
2ff2a28c221681e256dcff28770782736d3a796a Version object v2.0.1
d4b2e2bd830f77cdbc2297112c2e46b6555d4393 Fix compareTo()
05fe7e012b07d1a5b8de29804f96d9a6b24229a1 Make compareTo() fail
6e85371414357a41c1fc0cec0e75adba92f96832 Fix VersionFactory passing null
c1fd1f032f87d860d5ed9d6f6679c9fa522cff8d Version object v2.0
62c3a92c008a2ed11f0a4d016080afc3541d0700 Version object v1.2
c42e9e617128085e872c51b4d977a04e48d69e8f Deprecated, doc'd, future-proofed getNm


Nikolai@CALIGARI-7 ~/Documents/NetBeansProjects/Version (master)
$ git checkout 3a796a
error: pathspec '3a796a' did not match any file(s) known to git.

J'essayais de revenir en arrière et de construire le commit pour Version object v2.0.1. Heureusement, j'ai eu l'idée d'essayer tout le code de hachage et cela a fonctionné! Ce qui signifie que j'utilisais la mauvaise extrémité du code de hachage.

Nikolai@CALIGARI-7 ~/Documents/NetBeansProjects/Version (master)
$ git checkout 2ff2a
Note: checking out '2ff2a'.

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 2ff2a28... Version object v2.0.1

Nikolai@CALIGARI-7 ~/Documents/NetBeansProjects/Version ((2ff2a28...))
$

Comme indiqué ci-dessus, pour les codes de hachage partiels, vous devez fournir le front-end, pas le back-end.

Nikolaii99
la source
4

Cela m'est arrivé après avoir renommé un fichier non validé dans Android Studio.

Git semblait avoir l'ancienne version dans son dépôt, même si elle n'existait plus.

fetch, pull, checkout, add all and so on did not help in my case!

J'ai donc ouvert l'interface graphique Git de TortoiseGit qui m'a montré le fichier exact qui a causé des problèmes.

Ensuite, j'ai supprimé le fichier du référentiel avec

git rm -r --cached /path/to/affected/file

et le problème était parti

Marian Klühspies
la source
3

Dans mon cas, j'avais renommé un fichier en changeant la casse du fichier, c'est-à-dire SomeFile.js -> someFile.js

Je pense que c'était lié au problème. Faire un git fetch n'a pas résolu le problème.

J'ai retiré les fichiers de mon projet, j'ai fait une recherche et j'ai poussé sans eux. Ensuite, je suis allé chercher, je les ai rajoutés et j'ai poussé, et cela a fonctionné. Je ne sais pas si toutes ces étapes étaient nécessaires, mais cela a finalement fonctionné.

Kip
la source
Poussez sans le fichier renommé et l'émission de git add file après l'a fait pour moi
phil294
3

dans mon cas j'entre dans le répertoire des sous-modules sans faire

  • git submodule init
  • git submodule update

Donc git était lié au dossier parent qui manquait effectivement cette branche.

Ilya Gazman
la source
3

vérifiez s'il ne s'agit pas d'une faute de frappe dans le nom du fichier cible. J'essayais de mettre en scène en tapant

git add includes/connection..php

Mais je n'ai pas remarqué que j'utilisais deux points Mais ensuite je tape

git add includes/connection.php

Ça marche

Matteus Barbosa
la source
2

Pour moi, c'était un problème avec mes informations d'identification


Après avoir essayé une partie de la réponse, l'un d'eux m'a aidé à résoudre le problème:

L'exécution a git fetchgénéré l'erreur suivante:

Impossible de résoudre l'hôte: bitbucket.org

Tout ce que j'avais à faire était de forcer mon IDE (VS Code dans mon cas) à se souvenir de mes informations d'identification:

git config --global credential.helper wincred

Git a immédiatement synchronisé toutes les modifications et git checkout <branche>fonctionne bien maintenant!

Jeffrey Roosendaal
la source
1

J'obtenais la même chose pathspec errorsur git-bash. J'ai utilisé Tortoise git sur Windows pour changer / commander la branche.

capitaine
la source