Git: Zweig kann nicht ausgecheckt werden - Fehler: Pfadspezifikation '…' stimmte nicht mit Dateien überein, die Git bekannt sind

706

Ich bin mir nicht sicher, warum ich einen Zweig, an dem ich zuvor gearbeitet habe, nicht auschecken kann . Siehe die folgenden Befehle (Hinweis: coist ein Alias ​​fürcheckout ):

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.

Ich bin mir nicht sicher, was es bedeutet, und ich kann anscheinend nichts finden, was ich bei Google verstehen kann.

Wie checke ich diesen Zweig aus und was habe ich möglicherweise getan, um diesen zu brechen?

AKTUALISIEREN :

Ich habe diesen Beitrag gefunden und beim Laufen habe git show-refich:

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

UPDATE im .gitVerzeichnis ( user_controlled_site_layoutsbefindet sich im 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

UPDATE ein 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
quelle
Könnte das helfen? stackoverflow.com/questions/2527355/…
Boldewyn
Funktioniert es, wenn Sie : git checkout refs/heads/user_controlled_site_layouts?
Mark Longair
2
Mark - nein, erhalte immer noch den gleichen Fehler.
Ramon Tayag
1
Wenn ich Ihr Update sehe, bin ich mir nicht sicher, wie Sie einen Zweig haben, der in, git branch -aaber nicht in angezeigt wird git show-ref. Existiert die Datei .git/refs/heads/feature/user_controlled_site_layouttatsächlich? Wenn ja, was gibt cat .git/refs/heads/feature/user_controlled_site_layoutes?
Mark Longair
1
Ich habe den gleichen Fehler erhalten, ich habe den Zweig von einem anderen Repo erstellt und versucht, diesen Zweig zu einem anderen Repo auszuchecken. Also habe ich es wegen der verschiedenen Repos bekommen.
Kushan Gunasekera

Antworten:

947

Versuchen Sie git fetch, dass Ihr lokales Repository alle neuen Informationen von github erhält. Es werden nur die Informationen über neue Zweige und kein tatsächlicher Code benötigt. Danach git checkoutsollte das gut funktionieren.

MarkoHiel
quelle
19
Zur weiteren Klärung git fetchist nützlich , wenn Sie Ihr lokales Repository mit dem Remote - Repository müssen synchronisiert werden , aber Sie nicht wollen , um die Änderungen in Ihren Arbeitsordner verschmelzen.
Mark Lakata
138
Bei einem Klon mit mehreren Fernbedienungen git checkout Branchfunktioniert das nicht. Bei mehreren Fernbedienungen ist nur der Name des Zweigs mehrdeutig und erfordert die Angabe von Remote / Zweig. Der Befehl git checkout -b branch remote/branchfunktioniert in diesem Szenario.
Umair Ishaq
1
Ich hatte es irgendwie geschafft, einen lokalen "Master" zu erstellen. Obwohl "git fetch" mich näher brachte, musste ich zuerst meinen lokalen Master löschen ("git branch -d master"), bevor ich zum Remote-Master wechselte ("git checkout") Meister"). Für den Fall, dass das jemand anderem hilft, der so dumm ist wie ich!
Jamie Brown
1
@ Aleks es ist nicht die akzeptierte Antwort, weil es nichts mit der Frage des OP zu tun hat . Er konnte einen Zweig, den er zuvor lokal ausgecheckt (dh erstellt) hatte, nicht mehr auschecken . Nur weil andere Leute mit einem anderen, viel grundlegenderen Problem diese Antwort gefunden und bewertet haben (die für jeden Git-Benutzer mit mehr als zwei Tagen Erfahrung völlig trivial und bekannt ist), heißt das nicht, dass das OP sie akzeptieren sollte.
Michael Johnston
11
git fetchkönnte den Job machen. Möglicherweise werden jedoch nicht alle Zweige von der Fernbedienung abgerufen. Sie müssten das Abruf-Übereinstimmungsmuster festlegen. Siehegit config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" : stackoverflow.com/questions/11623862/…
Jichao
363

Ich habe diesen Fehler erhalten, als ich versucht habe, einen neuen Zweig auszuchecken:

Fehler: pathspec 'BRANCH-NAME' stimmte nicht mit Dateien überein, die git bekannt sind.

Als ich es versuchte git checkout origin/<BRANCH-NAME>, bekam ich den abgetrennten KOPF:

(vom Ursprung getrennt /)

Schließlich habe ich Folgendes getan, um das Problem zu beheben :

git remote update
git fetch 
git checkout --track origin/<BRANCH-NAME>
Mayank
quelle
15
Mit diesem "checkout" -Befehl habe ich folgende Meldung: fatal: Pfade können nicht aktualisiert und gleichzeitig zum Zweig 'foo' gewechselt werden.
NEOline
1
Nachdem ich die Remote-Adresse manuell geändert hatte, konnte ich keine neuen Zweige auschecken. "git remote update" schien den Trick zu tun.
Martin
ohne das "git remote update" hat es nicht funktioniert. Vielen Dank!
Kristiyan Tsvetanov
git checkout --track origin/staging fatal: git checkout: --track and --no-track require -bGit Version 1.5.6.5
Ivan Borshchov
Verwendet als nächstes statt dritten Befehlgit checkout -b staging --track origin/staging
Ivan Borshchov
152

Ich habe diesen Fehler für einen Zweig erhalten, der entfernt war und keinen lokalen Verfolgungszweig hatte. Obwohl ich sicher bin, dass ich Remote-Filialen über eine einfache ausgecheckt habe

git checkout feature/foo

In der Vergangenheit musste ich diesen Fehler umgehen

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

Ich habe auch keine Ahnung, was ich getan habe, um mich in diese Situation zu bringen.

Gregory McIntyre
quelle
1
Leider habe ich es nicht auf den Remote-Git-Server übertragen.
Ramon Tayag
Das hat bei mir funktioniert. Es passierte auf Git v 1.6 auf einer FC10-Maschine.
FractalSpace
26
Git vermutet normalerweise, dass der Remote-Zweig ausgecheckt werden muss, aber wenn mehr als eine Remote verwendet wird, scheint dies nicht mehr möglich zu sein. Quelle: makandracards.com/makandra/…
Elijah Lynn
1
git checkout feature / foo statt nur git checkout foo hat bei mir funktioniert
Alejandro Moreno
Dies passierte mir (in einem Repo mit vielen Fernbedienungen und Hunderten von Zweigen, von denen ich 3 Jahre lang erfolgreich Zweige vom Ursprung ausgecheckt hatte) und ich war verwirrt. Bei der Überprüfung stellte ich fest, dass ich eine neue Fernbedienung hinzugefügt und diese mit Kopieren / Einfügen in einem Texteditor anstelle des Befehls git ausgeführt hatte, und vergaß, die fetch = +refs/heads/*:refs/remotes/origin/*Zeile so zu ändern , dass sie mit dem neuen Namen der Fernbedienung übereinstimmt. LOL. Vielleicht ist das Makandra passiert? Denn nachdem ich es repariert habe, wird es beim Auschecken des Zweigs erneut vom Ursprung abgerufen, obwohl ich viele Fernbedienungen habe.
Michael Johnston
91

Wenn Sie einen Zweig mit gelöscht haben git branch -D yourbranchname Ihrem Repo und erneut geklont haben, müssen Sie möglicherweise Ihren lokalen Zweig erneut erstellen.

Versuchen:

git checkout -b yourbranchname
Francisco Alvarez
quelle
Diese Option funktioniert immer, auch wenn Dateien bereits geändert wurden und Sie sie in einen neu erstellten Zweig verschieben möchten.
Nerius Jok
Dies war ein hilfreicher Kommentar, da ich zwar das gleiche Problem / die gleiche Frage wie das OP hier teilte, die Antworten jedoch eine einfache Situation voraussetzten. Leider hatte ich in meiner Situation zuvor NUR einen lokalen Zweig erstellt und ihn dann gelöscht, wie hier von @Francisco Alvarez angegeben. Unabhängig davon, wie ich die anderen Lösungen hier ausprobiert habe, konnte ich den neuen Remote-Zweig nicht abrufen. Diese Antwort hat meinen Speck gerettet.
David
61

Ich habe die gleichen Fragen und habe einige Informationen von diesem Link erhalten: git fetch ruft nicht alle Zweige ab

Jetzt bin ich mir vielleicht nicht sicher, wie diese Situation passiert ist, zumindest können wir sie lösen:

Schritt 1. Überprüfen Sie Ihre Einstellung "remote.origin.fetch" wie folgt

$ git config --get remote.origin.fetch

+ refs / Heads / private_dev_branch: refs / remotes / origin / private_dev_branch

Schritt 2. Ändern Sie "remote.origin.fetch", um alles abzurufen

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

$ git config --get remote.origin.fetch

+ refs / Köpfe / *: refs / Fernbedienungen / Herkunft / *

Dann können Sie versuchen, "Git Pull" (vielleicht funktioniert auch "Git Fetch Origin", aber ich habe nicht versucht), um den gesamten Zweig zu bekommen.

bearzyj
quelle
@onionjake ist richtig, sorry, dass ich die Fragen nicht in allen Details überprüft habe. Ich habe nur die gleichen Fehlermeldungen erhalten, als ich die gleiche Aktion von "git checkout <existed_branch>" ausprobiert habe, aber anders als das Problem des Absenders. ----- Der Absender konnte den Zweig lokal sehen, während ich nicht kann. Meine Antwort könnte das Problem lösen, für das nicht alle Zweige im Voraus abgerufen wurden. Aber nicht die Situation für das Problem des Urhebers.
Bearzyj
3
Viele Leute, einschließlich mir, erhalten diesen Fehler, weil sie ein Repo mit dem Flag --branch klonen könnten. Daher erhalten sie auch nach dem Abrufen von Git keine anderen Zweige und können nichts von der Fernbedienung auschecken. Dies behebt dieses Problem. Vielen Dank!
Orif Khodjaev
Vielen Dank. Ich habe das Entwicklungs-Docker-Image von Tensorflow verwendet und es beschränkt den Zweig auf eine bestimmte Version. Nachdem ich die Fetch-Konfiguration eingerichtet habe, kann ich jetzt auschecken.
Michael_Zhang
24

Git Windows-Benutzer passen auf - ohne die Einstellung--icase-pathspecs oder GIT_ICASE_PATHSPECS = 1 env var wird bei git pathspecs in diesem Fall zwischen Groß- und Kleinschreibung unterschieden

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

ist nicht dasselbe wie

git checkout origin/FooBranch "some/path/to/file.Txt"
StuartLC
quelle
1
Eine Sache zu beachten, die aus der Dokumentation nicht klar war, ist, dass der --icase-pathspecsParameter zuerst oder zumindest vorher kommen muss-C <path>
sonyisda1
21

Wenn der Name des Zweigs und Sie keine nicht festgeschriebene Datei haben, versuchen Sie dies

git fetch && git checkout <branch name>
Sajin M Aboobakkar
quelle
Dies scheint überhaupt nicht mit der Frage zu tun zu haben?
Zwiebeljake
Ich habe das gleiche Problem wie oben erwähnt, das mit den folgenden Befehlen behoben wurde
Sajin M Aboobakkar
19

Ich habe das Problem beim Wechsel meiner Filiale festgestellt.

Ich habe einen Git Pull am aktuellen Zweig gemacht und dann versucht, den neuen auszuchecken, und es hat funktioniert

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

Ankit Marothi
quelle
Wirklich nützlich :)
Vikifor
Warum sollte das funktionieren? Tut git pullmehr als den aktuellen Zweig zu ziehen?
Cameron Hudson
Dies ist möglicherweise nur ein Fall, in dem Sie versuchen, aus einem Zweig zu ziehen, der von einer anderen Person erstellt wurde, und der in Ihrem aktuellen Repo noch nicht abgerufen wurde.
Ankit Marothi
15
git pull

Das hat es einfach für mich behoben :)

OpMt
quelle
13

Ich habe das gleiche Problem, weil ich verwendet habe git clone --depth=1, was impliziert --single-branch.

Führen Sie eine abgeschlossene git clonewird es beheben.

Huachao Huang
quelle
Vielen Dank für den Hinweis. Es ist genau das gleiche Problem, mit dem ich konfrontiert war. Vielen Dank
Mukesh Kumar
Ein vollständiger Klon ist möglicherweise nicht erforderlich. Wenn der Zweig von einer anderen Person erstellt wurde, nachdem Sie das Repo ursprünglich geklont haben, wird dieser Fehler angezeigt, da Ihr lokales Repo keine Informationen zu diesem neuen Zweig enthält. Wechseln Sie einfach zum Master und machen Sie einen Git Pull. Versuchen Sie dann, den neuen Zweig auszuchecken.
Yasin
12

Ich habe das bekommen, als ich folgendes gemacht habe:

  • Verwendete IntelliJ IDE, verbunden mit git
  • Erstellt eine neue Datei und fügt sie zu git hinzu
  • Die neue Datei wurde umbenannt

Als ich versuchte, das Verzeichnis einzuchecken, wurde dieser Fehler angezeigt.

Reparieren:

Ich habe das Repo in Git-Erweiterungen geöffnet. Ich habe gesehen, dass die Datei (mit dem alten Namen) inszeniert wurde. Aber da es nicht mehr existierte, konnte es nicht begangen werden.

Ich habe diese Datei einfach freigegeben.

Dann habe ich die Datei (diesmal korrekt benannt) erneut in git hinzugefügt und ohne Fehler festgeschrieben.

Somaiah Kumbera
quelle
Das Lustige ist, es funktioniert immer noch mit TortoiseGit, auch wenn es nicht in Intellij
Marian Klühspies
3
Das hat mir sehr geholfen. Ich habe SourceTree verwendet, um das f * ck r einer Datei zu finden und es nicht bereitzustellen.
Vinchenzo
10

Ich hatte dieses Problem heute, das ich versuchte git checkout foound bekamerror: pathspec 'foo' did not match any file(s) known to git.

Es stellte sich heraus, dass ich im falschen Repo war . Lektion gelernt: Überprüfen Sie, welches Repo Sie sich ansehen, bevor Sie ausflippen.

James Harrington
quelle
Ha - ja, das war ich - erstellte eine Filiale in Bitbucket von Jira Ticket, bemerkte nicht, dass sie in einem zufälligen Repo erstellt wurde
Keir
Nebenbemerkung: Ich habe mit mehreren Fernbedienungen gearbeitet, eine richtig eingestellt und die andere auf das falsche Repo hingewiesen. sooo. danke für die erinnerung, ich konnte mein problem leicht erkennen, als ich eine git remote -v
Dreamling
9

Ich habe diesen Fehler beim Auschecken eines Zweigs über Folgendes erhalten:

git checkout branchX

was ich vorher nicht ausgecheckt hatte. Es funktionierte nur, wenn die Fernbedienung explizit angegeben wurde:

git checkout --track origin/branchX

Der Grund dafür war, dass ich 2 verschiedene Fernbedienungen (Ursprung + etw. Sonst) in git config konfiguriert hatte. Da ich die zweite Fernbedienung nicht brauchte, entfernte ich sie und voilá, es funktionierte. Die Alternative zum Festlegen der Standardfernbedienung über:

checkout.defaultRemote=origin

hat bei mir nicht funktioniert

RS1980
quelle
Ich habe diese Antwort hinzugefügt, weil alle anderen vorgeschlagenen Antworten bei mir nicht funktioniert haben. Ich hoffe, dies hilft jemandem, der die gleiche Ursache hat (2 Fernbedienungen).
RS1980
8

Überprüfen Sie zunächst den übergeordneten Zweig. Geben Sie dann ein

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

Ich hoffe es hilft!.

Shradhey Tripathi
quelle
8

Ich habe es behoben, indem ich meine Git-Konfigurationsdatei geändert habe. Überprüfen Sie die Konfigurationsdatei in Ihrem Git-Verzeichnis. .git\config

Es hatte zuvor

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

Ich habe es behoben, indem ich es geändert habe

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

Beachten Sie, dass der Kopf nur auf einen Zweig zeigte, sodass er den Verweis auf andere vorhandene Zweige nicht finden konnte. Ich habe ihn in * geändert, damit alles im Ursprung überprüft wird.

HarsH
quelle
Danke, Kumpel, stundenlange Bemühungen und schließlich bin ich mit deiner Lösung gelandet.
Sunil Lulla
7

Unter Windows wird git standardmäßig mit git installiert

core.ignorecase = true

Dies bedeutet, dass bei Git-Repo-Dateien die Groß- und Kleinschreibung nicht berücksichtigt wird. Um dies zu ändern, müssen Sie Folgendes ausführen:

\yourLocalRepo> git config core.ignorecase false

Sie finden diese Konfiguration in der Datei .git \ config

Vasile Bors
quelle
7

Ich habe den Remote-Ursprung urlaus einer anderen .git/configDatei kopiert. Dabei .git/configfehlte meine neue Datei in der folgenden Zeile im [remote "origin"]Abschnitt

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

Hinzufügen über der Zeile behoben error: pathspec 'master' did not match any file(s) known to git.

AamirR
quelle
6

Ich hatte das gleiche Problem. Ich dachte, ich hätte einen Zweig benannt, fooals ich versuchte:

git checkout foo

Ich bekam:

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

Dann habe ich den vollständigen Filialnamen ausprobiert:

git checkout feature/foo

dann arbeitete für mich.

tokhi
quelle
5

Wenn es unter Windows passiert, liegt wahrscheinlich das Problem mit dem Dateinamen vor.

Ich hatte heute diesen Fehler - ich habe eine neue Datei erstellt, zu GIT hinzugefügt, dann habe ich einen Buchstaben im Dateinamen von unten nach oben geändert und konnte dann nichts mehr - festschreiben, zurücksetzen, Datei aus dem Repo löschen.

Die einzige Lösung, die ich gefunden habe, war, den Dateinamen wieder auf genau den gleichen Fall zu ändern, als ich diese Datei zu GIT hinzufügte, dann GIT zurückzusetzen, um diese Datei aus GIT zu entfernen, und dann den Dateinamen erneut zu ändern, wie ich wollte. Nach diesen Änderungen konnte ich mich zum Repo verpflichten und dann ohne Probleme pushen.

Marcin Nabiałek
quelle
Dies hat geholfen, aber es sollte erwähnt werden, dass die Umbenennung über erfolgt git mv. Vermutlich haben Sie es so gemacht, weil es für mich über meine IDE (IntelliJ PhpStorm) fehlgeschlagen ist ...
Dennis98
5

In meinem Fall habe ich ZWEI Zweig 1) Master (der für Live-Server ist) 2) Dev (Testserver). Ich hatte mehrere Fernbedienungen so eingestellt, dass sie Code auf den jeweiligen Server übertragen. Als ich versuchte, den Zweig zu wechseln, bekam ich den Fehler wieerror: pathspec 'master' did not match any file(s) known to git.

Sie können sie durch sehen git remote -v. Ich hatte andere Fernbedienungen außer originFernbedienungen von entferntgit remote remove <remote-name>

Dann git fetch

Jetzt kann ich die Filiale von auschecken git checkout <branch-name>.

NiRmaL
quelle
5

Ich bin auf dasselbe Problem gestoßen, als ich zum ersten Mal mit Git herumgespielt habe. Beim Versuch meines ersten Commits ...

git commit -m 'first commit!'

Ich habe den vom OP erwähnten Fehler erhalten ...

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

Ich dachte, ich hätte Git durch die Verwendung eines Schlüsselworts in der Festschreibungsnachricht verwirrt, also habe ich ein paar andere Wörter ausprobiert und den gleichen Fehler erhalten.

Schließlich habe ich in der Nachricht doppelte Anführungszeichen verwendet ...

git commit -m "first commit!"

Dies stellte sich als erfolgreich heraus ...

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

Ich hatte einen dummen Fehler gemacht, während des Festschreibens keine -m-Flagge anzugeben (lol passiert)

git commit -m "commit message in here"
Ajain Vivek
quelle
gleiche Situation hier. vergiss einfach "-m" bekomme die gleiche Fehlermeldung.
Niuya
5

Ich hatte eine andere Grundursache

Ich hatte ein Skript, das im Grunde alle Zweige, die mit dem Jira-Ausgabeschlüssel im "PRJ-1234" übereinstimmen, unter allen Zweigen durchsucht, um einen Befehl zum Auschecken von Git-Zweigen für den übereinstimmenden Zweig auszuführen

Das Problem in meinem Fall war, dass zwei oder mehr Zweige denselben Jira-Schlüssel gemeinsam hatten und mein Skript daher mit dem oben genannten Fehler fehlschlug

Durch Löschen des alten nicht verwendeten Zweigs und Sicherstellen, dass nur ein einziger Zweig über die Jira-Schlüsselreferenz verfügt, wurde das Problem behoben

Hier ist mein Code für den Fall, dass jemand ihn verwenden möchte

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

Speichern Sie dies als switchbranch.sh

Verwenden Sie es dann vom Terminal aus ./switchbranch.sh PRJ-1234

Korayem
quelle
Für mich war es auch der richtige Upstream-Pfad / Name und einschließlich des Abrufs aller Remote-Tags sowie "git fetch --all --tags --prune", um den richtigen Namen zu finden: "git branch -a | grep some_upstream" bevor Sie es mit dem vollständigen Pfad als "git checkout -f --track -b new_branch remotes / upstream / some_upstream_branch"
auschecken
4

Keine dieser Antworten löste mein Problem:

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.

Ich habe versucht, zurück zu gehen und das Commit für aufzubauen Version object v2.0.1. Zum Glück kam mir die Idee, den gesamten Hash-Code auszuprobieren, und es hat funktioniert! Was bedeutet, dass ich das falsche Ende des Hash-Codes verwendet habe.

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...))
$

Wie oben gezeigt, müssen Sie für teilweise Hash-Codes das Front-End und nicht das Back-End angeben.

Nikolaii99
quelle
4

Ist mir passiert, nachdem ich eine nicht festgeschriebene Datei in Android Studio umbenannt habe.

Git schien die alte Version in seinem Repository zu haben, auch wenn sie nicht mehr existierte.

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

Also öffnete ich die Git-GUI von TortoiseGit, die mir die genaue Datei zeigte, die Probleme verursachte.

Danach habe ich die Datei aus dem Repository mit gelöscht

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

und das Problem war weg

Marian Klühspies
quelle
3

In meinem Fall hatte ich eine Datei umbenannt, die den Fall der Datei änderte, dh SomeFile.js -> someFile.js

Ich denke, das hing mit dem Problem zusammen. Ein Git-Abruf hat das Problem nicht behoben.

Ich habe die Dateien aus meinem Projekt verschoben, einen Abruf durchgeführt und einen Push ohne sie ausgeführt. Dann holte ich sie, fügte sie wieder hinzu und drückte sie, und es funktionierte. Ich weiß nicht, ob all diese Schritte nötig waren, aber es hat letztendlich funktioniert.

Pennen
quelle
Push ohne die umbenannte Datei und Ausgabe von Git Add-Datei danach tat es für mich
phil294
3

In meinem Fall gebe ich das Submodul-Verzeichnis ein, ohne es zu tun

  • git submodule init
  • git submodule update

Git wurde also mit dem übergeordneten Ordner verknüpft, der diesen Zweig tatsächlich übersehen hat.

Ilya Gazman
quelle
3

Überprüfen Sie, ob der Zieldateiname kein Tippfehler ist. Ich habe versucht, durch Tippen zu inszenieren

git add includes/connection..php

Aber ich habe nicht bemerkt, dass ich zwei Punkte verwendet habe. Aber dann tippe ich

git add includes/connection.php

Es klappt

Matteus Barbosa
quelle
2

Für mich war es ein Problem mit meinen Anmeldeinformationen


Nachdem ich einige der Antworten ausprobiert hatte, half mir einer von ihnen, das Problem zu lösen:

Beim Ausführen wurde git fetchder folgende Fehler ausgegeben:

Host konnte nicht aufgelöst werden: bitbucket.org

Ich musste lediglich meine IDE (in meinem Fall VS-Code) zwingen, sich meine Anmeldeinformationen zu merken:

git config --global credential.helper wincred

Git hat sofort alle Änderungen synchronisiert und git checkout <branche>funktioniert jetzt einwandfrei !

Jeffrey Roosendaal
quelle
1

Ich bekam das gleiche pathspec errorbei Git-Bash. Ich habe Tortoise Git unter Windows verwendet, um den Zweig zu wechseln / auszuchecken.

Kapitän
quelle