2016-06-26 6 views
24

Ich migrierte meine Repos von Bitbucket oder Github. Ich glaube nicht, diese Dinge, aber es ist das einzige, was anders ... Für ein wenig, während ich zwei Fernbedienungen hatte ein:Kann nicht zu entfernten Zweig drücken, kann nicht aufgelöst werden, um zu verzweigen

origin: bitbucket 
github: github 

Dann entfernte ich beide und spitzen Ursprung Github:

git remote remove origin 
git remote remove github 
git remote add origin https://github.... 

Test-Push von Zweig entwickeln:

git push origin develop 

Alles auf dem neuesten Stand, ok, gut.

Erstellen Sie einen neuen Zweig für einige Arbeit wie gewohnt:

git checkout -b Feature/Name 

-Update eine Datei oder zwei. Versuchen Sie, remote zu drücken:

git push origin Feature/Name 

Dies führt zu dem Fehler:

fatal: Feature/Name cannot be resolved to branch

Online-Suche für dieses Problem finden einige Sachen über Gewährleistung HEAD richtig ist, andere darum, dass ich habe meine Der Name des Zweignamens ist korrekt (obwohl die Verzweigung zu diesem Zeitpunkt noch nicht auf der entfernten Seite vorhanden ist). Kann nicht aufgelöst werden.

Ran diesen Befehl ein:

git push --all -u 

Das hat meinen Feature/Name Zweig zu GitHub, aber immer noch gleiches Verhalten wie vor sehen:

git push origin develop 
git push origin Feature/Name 

Die ersten Arbeiten, die zweiten den gleichen Fehler wirft.

Ich kann nicht herausfinden, warum ich diesen Fehler bekomme. Irgendwelche Ideen?

+0

In welchem ​​Zweig waren Sie beim Erstellen von 'Feature/Name'? Bist du sicher? * 'Feature/Name' existiert und das ist der ausgecheckte Zweig? Überprüfen Sie mit 'git branch'. – Schwern

+0

@Swwern - Nur drei Zweige existieren (lokal und remote): entwickeln, testen und beherrschen. Sobald eine Verzweigung bereinigt und zurückgemischt wird, um sie zu entwickeln, lösche ich sie lokal (und entfernt gegebenenfalls).Ich bin mir sicher, dass es nur meine drei waren - ich habe das Projekt seit einer Weile nicht mehr geöffnet und das erste, was ich getan habe, war zu überprüfen und sicherzustellen, dass ich keine losen Zweige habe. – jleach

+0

Bedeutet das, dass Sie "git branch" ausgeführt haben, um zu überprüfen, ob "Feature/Name" lokal existiert? Vertrauen Sie einer GUI oder IDE nicht. Hast du den Fall richtig verstanden? – Schwern

Antwort

52

Ich hatte dieses Problem auch, und es machte mich verrückt. Ich hatte etwas wie feature/name aber git branch -a zeigte mir FEATURE/name. Das Umbenennen der Verzweigung, das Löschen und erneute Erstellen der Verzweigung funktionierte nicht. Was es endlich behoben:

Go in .git/refs/heads

Sie erhalten eine FEATURE Ordner. Benennen Sie es in feature um.

+1

Das war die richtige Antwort für mich. War mit Gitbash auf Windows und hatte Feature/einige-Feature und Feature/einige-Feature erstellt. –

+0

Dies sollte als die richtige Antwort markiert werden. Hat mir geholfen. Vielen Dank! – GuiDoody

+1

Ich schulde dir Bier für diese Antwort! : D – user3797599

17

Basierend auf meinen eigenen Tests und the OP's comments, denke ich, dass sie irgendwann auf dem Gehäuse des Zweigs Namen schummeln.

Erstens, ich glaube, das OP ist auf einem case insensitive Betriebssystem wie OS X oder Windows. Dann haben sie so etwas getan ...

$ git checkout -b SQLMigration/ReportFixes 
Switched to a new branch 'SQLMigration/ReportFixes' 

$ git push origin SqlMigration/ReportFixes 
fatal: SqlMigration/ReportFixes cannot be resolved to branch. 

Beachten Sie den Gehäusedifferenz. Beachten Sie auch, dass der Fehler sehr unterschiedlich ist, wenn Sie nur den Namen eingeben.

$ git push origin SQLMigration/ReportFixme 
error: src refspec SQLMigration/ReportFixme does not match any. 
error: failed to push some refs to '[email protected]:schwern/testing123.git' 

Da Github das Dateisystem verwendet Zweignamen zu speichern, versucht es .git/refs/heads/SqlMigration/ReportFixes zu öffnen. Da das Dateisystem nicht zwischen Groß- und Kleinschreibung unterscheidet, wird .git/refs/heads/SqlMigration/ReportFixes erfolgreich geöffnet. Es wird jedoch verwirrt, wenn versucht wird, die Zweigstellenbezeichnungen zwischen Groß- und Kleinschreibung zu vergleichen, und sie stimmen nicht überein.

Wie sie in einen Zustand, in dem der lokale Zweig ist SQLMigration/ReportFixes und der Remote-Zweig ist SqlMigration/ReportFixes Ich bin mir nicht sicher. Ich glaube nicht, dass Github den Namen der abgelegenen Niederlassung durcheinander gebracht hat. Die einfachste Erklärung ist jemand anderen mit Push-Zugriff geändert den Namen der Remote-Filiale. Sonst haben sie irgendwann etwas getan, das es geschafft hat, die Fernbedienung mit dem Tippfehler zu schaffen.Wenn sie ihre Shell-Historie überprüfen, könnten sie vielleicht mit history | grep -i sqlmigration/reportfixes einen Befehl finden, wo sie das Gehäuse vertippt haben.

+0

Ich stieß auf dieses Problem, wenn ich die Groß- und Kleinschreibung von Zeichen im Zweignamen unter OS X änderte. Durch das Ändern der Zeichen wurde das Problem behoben. –

+0

Dies kann auch passieren, wenn Sie eine vorherige Verzweigung haben, z. B. AM-xxx/some_branch, und dann eine weitere AM-XXX/another_branch erstellen. Git wird die unterschiedlichen Fälle lokal zulassen und die beiden nicht remote verknüpfen. – timpwbaker

1

Vielleicht haben Sie vergessen, git fetch auszuführen? Es ist erforderlich, Daten aus dem Remote-Repo zu holen! Versuchen Sie zu laufen git fetch remote/branch

3

Git wird Sie Kasse der aktuelle Zweig mit einem anderen Gehäuse, und es wird nicht finden, einen Verweis auf der Fernbedienung.

Habe gerade den Weg gefunden.

1

Für meinen Fall hatte ich Branch Folder (oder was auch immer es genannt wird) mit Großbuchstaben, dann erstelle ich einen neuen mit Differenz casing (Kleinbuchstaben) aber git tatsächlich den Zweig mit Kapital erstellen.

Ich habe einen Zweig wie feature-ABC/branch1 vorher erstellt und geschoben. Dann erstelle ich einen Zweig feature-abc/branch2 (beachte das Kleinbuchstabe ABC) und versuche, ihn unter Verwendung von git push --set-upstream origin feature-abc/branch2 an die Fernbedienung zu senden und den Fehler "kann nicht aufgelöst werden" zu erhalten. Also ich git branch und sehe, dass es tatsächlich feature-ABC/branch2 statt feature-abc/branch1 für mich erstellt. Ich checke wieder mit git checkout feature-ABC/feature2 und drücken Sie es mit dem Großbuchstaben (feature-ABC/feature2), um es zu lösen.

2

Eine ähnliche Sache ist mir passiert. Ich habe einen Zweig namens "Feat/name" erstellt. ich versuchte, es zu geschoben werden:

git push --set-upstream origin Feat/name

ich die gleichen fatalen Fehler, wie Sie bekam:

fatal: Feat/name cannot be resolved to branch

es zu lösen ich einen neuen Zweig geschaffen, wie ich betroffen sehr wenige Dateien hatte. Dann aufgelistet ich meine Zweige die falschen zu löschen und ohne Kappe angezeigt:

  • Leistung/name

I Kappen verwendet hatte, bevor aber nie auf dem ersten caracter. Es sieht aus wie Git mag es nicht ...

+0

Ich hatte den gleichen Fall THX: D – abdoutelb

0

Sie könnten ähnliche Zweig erstellt haben, aber unterschiedliche case-sensitive-weise, dann müssen Sie laufen:

git branch -D <name-of-different-case-branch>

und dann versuchen Sie es erneut zu drücken.

Verwandte Themen