fatal: Der aktuelle Zweigstamm hat keinen vorgelagerten Zweig

226

Ich versuche, eines meiner Projekte auf Github zu bringen, und es wird immer wieder der folgende Fehler angezeigt:

peeplesoft@jane3:~/846156 (master) $ git push

fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

     git push --set-upstream origin master

Also habe ich es versucht und folgendes bekommen:

peeplesoft@jane3:~/846156 (master) $ git push --set-upstream origin master

fatal: Authentication failed

Ein anderer Stackoverflow-Thread schlug vor, Folgendes zu versuchen, mit enttäuschenden Ergebnissen.

peeplesoft@jane3:~/846156 (master) $ git push -u origin master

fatal: Authentication failed

Dann habe ich das versucht:

peeplesoft@jane3:~/846156 (master) $ git config remote.origin.push HEAD

peeplesoft@jane3:~/846156 (master) $ git push

fatal: Authentication failed

Irgendwelche Hinweise?

user1524361
quelle
1
Das Repo muss bei github vorhanden sein, bevor Sie darauf zugreifen können. Macht es? Und ist das Repo, mit dem Sie arbeiten, ein Klon davon?
Matt
Ich habe das Repo von Github geklont, dann 1 Zeile zu einer Readme-Datei hinzugefügt und dann versucht, es zurückzuschieben.
user1524361
1
Ich habe den gleichen Fehler erhalten, weil ich vergessen habe, die Dateien
festzuschreiben
3
-u und --set-upstream sind gleich
brainLoop
Wollte alle wissen lassen, welche gitBefehle das OP gepostet hat, hat mir geholfen, sogar mehr als die Antworten
Nathan

Antworten:

93

Sie haben den Push behoben, aber unabhängig von diesem Push-Problem (das ich unter " Warum muss ich einen neuen Zweig explizit pushen? " Erklärt habe : git push -u origin masteroder git push -u origin --all) müssen Sie jetzt das Authentifizierungsproblem beheben.

Das hängt von Ihrer URL ab (ssh wie in ' [email protected]/yourRepooder https wie in https://github.com/You/YourRepo)

Für https URL:

Wenn Ihr Konto durch die Zwei-Faktor-Authentifizierung geschützt ist , funktioniert Ihr reguläres Passwort nicht (für die https-URL), wie hier oder hier erläutert .

Gleiches Problem, wenn Ihr Passwort ein Sonderzeichen enthält (wie in dieser Antwort )

Wenn https nicht funktioniert (weil Sie keinen Sekundärschlüssel, ein PAT: Personal Access Token, generieren möchten), können Sie zu ssh wechseln, wie ich hier gezeigt habe .


Wie von qwerty in den Kommentaren angegeben, können Sie den gleichnamigen Zweig auf der Fernbedienung automatisch erstellen mit:

git push -u origin head 

Warum?

  • HEAD (siehe Ihre .git\HEADDatei) die Refspec des aktuell ausgecheckt Zweig (zB ref: refs/heads/master)
  • Die Standard- Push-Richtlinie ist einfach

Da die für diesen Push verwendete Referenzspezifikation head: (kein Ziel) ist, :<dst>bedeutet ein fehlendes Mittel, um dieselbe Referenz wie die <src>(head, die ein Zweig ist) zu aktualisieren .

Das funktioniert aber nicht, wenn HEAD abgenommen ist .

VonC
quelle
1
Genial, das ist es, was wir brauchen, um das
Grundproblem zu
Wenn Sie sich in einem Zweig befinden, ist dies hilfreich git push origin head -u. Erstellt automatisch den gleichnamigen Zweig auf der Fernbedienung.
Qwerty
1
@ Qwerty Danke, guter Punkt. Ich habe Ihren Kommentar (mit zusätzlichen Details) in die Antwort aufgenommen, um die Sichtbarkeit zu verbessern.
VonC
115

Sie können auch den folgenden Befehl verwenden:

git push -u origin master

Dadurch wird (-u) ein weiterer Zweig in Ihrem Remote-Repo erstellt. Sobald die Authentifizierung mit ssh abgeschlossen ist.

TantrajJa
quelle
2
Dies ist für das Problem wirklich relevant, da das Problem bei der Authentifizierung liegt. Er hat auch angegeben, dass er das bereits in seinem Beitrag versucht hat.
Mike Precup
2
Ich habe aus 2 Gründen abgelehnt. 1. Das OP gab an, dass er dies bereits versucht hat. 2. -uOption : Option ist die Verknüpfung für die --set-upstreamOption, die nichts mit der Erstellung eines neuen Zweigs zu tun hat. Aus der Dokumentation der Option -uoder--set-upstream : "Fügen Sie für jeden Zweig, der aktuell ist oder erfolgreich gepusht wurde, eine Upstream-Referenz (Tracking-Referenz) hinzu, die von git-pull [1] ohne Argumente und anderen Befehlen verwendet wird." Eigentlich verstehe ich nicht, warum diese Antwort so positiv bewertet wurde, wie es irreführend ist.
louisfischer
38

Anscheinend erhalten Sie diese Fehlermeldung auch, wenn Sie den --allParameter beim ersten Drücken vergessen . Ich hab geschrieben

git push -u origin

was diesen Fehler gab, sollte es gewesen sein

git push -u origin --all

Oh, wie sehr ich diese Fehler beim Kopieren und Einfügen liebe ...

Das Auge
quelle
3
Vielen Dank. Ich habe diesen Fehler in Visual Studio Code erhalten und dies hat funktioniert, aber kann im Kontext mehrerer Entwickler jemand erklären, was dies getan hat?
Hell.Bent
15

Sie müssen zuerst die Fernbedienung konfigurieren und dann drücken.

git remote add origin url-to-your-repo

Aktuelle Anweisungen

Santosh Pillai
quelle
13

Bitte versuchen Sie dieses Szenario

git push -f --set-upstream origin master
Lorem
quelle
7
Sie sollten näher erläutern, wie und warum dies funktioniert.
Benoît Latinier
6
"nicht schlecht" ist eine wirklich schlechte Erklärung für alles. "nicht schlecht" macht deine Antwort wirklich schlecht.
GhostCat
Dies behebt den erwähnten Fehler OP nicht: "Authentifizierung fehlgeschlagen"
Sean the Bean
Ja. Es hat bei mir funktioniert. Ich denke, dies zwingt das Commit zum Upstream-Zweig (Remote-Zweig).
VKG
12

Wenn Sie die Aktion definieren, die ausgeführt werden git pushsoll, wenn in der Befehlszeile keine Referenzspezifikation angegeben ist, in der Fernbedienung keine Referenzspezifikation konfiguriert ist und keine der in der Befehlszeile angegebenen Optionen eine Referenzspezifikation impliziert.

Mach es einfach:

git config --global push.default current

dann

git push
DariusV
quelle
1
Sie müssen sich bewusst sein, dass dies Änderungen an Ihren globalen Git-Einstellungen bewirkt, die einige nachteilige Auswirkungen haben können. Aber genau das habe ich gesucht.
Mavamaarten
@Mavamaarten was sind die möglichen nachteiligen Auswirkungen?
Kosii
7

Nun, ich hatte die gleichen Probleme beim Hochladen und habe es behoben, indem ich das Gleiche getan habe, was es verspricht: Früher habe ich versucht, das Terminal von https wie zu meinem Repository unter Linux zu pushen

git push https://github.com/SiddharthChoudhary/ClientServerCloudComputing.git

Aber ich bekam kein Ergebnis und daher ging ich tiefer und versuchte:

git push --set-upstream https://github.com/SiddharthChoudhary/ClientServerCloudComputing.git master

Und es hat funktioniert. So werden Sie dann mit Benutzername und Passwort aufgefordert. Ich habe auch ein Token generiert und anstelle des Passworts das Token eingefügt und damit erfolgreich gearbeitet.

  1. Um ein Token zu generieren, gehen Sie zu Ihrem Github-Konto und in den Entwicklereinstellungen und erstellen Sie ein weiteres Token.
  2. Kopieren Sie das Token, nachdem Sie es erhalten haben, und fügen Sie es in die Passwortabfrage ein, wenn Sie dazu aufgefordert werden.
Siddharth Choudhary
quelle
6

Auf einer sehr einfachen Seite können Sie, sobald Sie andere Zweige haben, nicht einfach einen Zweig schieben

git push

Sie müssen den Zweig jetzt angeben, auch wenn Sie den Zweig, den Sie pushen möchten, auschecken müssen

git push origin <feature_branch>

Wo kann sogar der masterZweig sein

Abhishek
quelle
5

Ich habe den einfachen Fehler gemacht, das Festschreiben zu vergessen:

git commit -m "first commit"

dann git push origin masterarbeitete.

yl_low
quelle
4

Ich hatte das gleiche Problem

Geben Sie hier die Bildbeschreibung ein

Ich habe es gelöst, das unten Befehl verwendet

$ git branch --set-upstream develop origin/develop

und es wird eine Konfiguration in der Konfigurationsdatei im Ordner .git hinzugefügt.

Geben Sie hier die Bildbeschreibung ein

Bluetata
quelle
3

Erst verwenden git pull origin your_branch_name Dannuse git push origin your_branch_name

FRabbi
quelle
Entschuldigung, wenn das albern klingt. So lernen Sie meinen Filialnamen kennen. Mein Repo ist in AWS.
Pravinraj Venkatachalam
Verwenden Sie "Git Branch"
Darius Miliauskas
3

Hierfür gibt es eine einfache Lösung, die für mich unter macOS Sierra funktioniert hat. Ich habe diese beiden Befehle ausgeführt:

git pull --rebase git_url(Ex: https://github.com/username/reponame.git)
git push origin master

Wenn nach einem zukünftigen Push ein schwerwiegender Fehler in Bezug auf den Upstream angezeigt wird, führen Sie einfach Folgendes aus:

git push --set-upstream origin master
theRana
quelle
0

1. Ein Computer und Ihr Github sind verbunden. Verwenden Sie SSH. Computercode, damit Sie keine verifizierte Bildbeschreibung hier eingeben müssen

2. Git kann leere Ordner nicht verwalten. Sie müssen also eine solche readme.md schreiben, die in einer Datei gespeichert ist. Andernfalls finden Sie die Datei nicht.

3. Ihr lokales Projekt ist nichts, worüber neue Projekte verschoben werden. Bitte

git init

git remote add origin +"githublink"

git add .

git commit -m "" geh wieder.

4. dann git pull origin master(der Schlüssel)

5. Endlich git push origin master(alle Probleme lösen).

http://my.oschina.net/psuyun/blog/123005参考 链接

王 逍遥
quelle
0

Wenn Sie versuchen, Ihren Code direkt in den Hauptzweig zu übertragen, verwenden Sie den Befehl

git push origin master

Es hilft mir.

HitechZa
quelle
0

Ich habe auch den gleichen Fehler bekommen. Ich denke, das lag daran, dass ich ihn geklont und versucht habe, ihn zurückzuschieben. $ git push -u origin master Dies ist der richtige Befehl. Versuchen Sie das

Objekte zählen: 8, fertig. Delta-Komprimierung mit bis zu 2 Threads. Objekte komprimieren: 100% (4/4), fertig. Objekte schreiben: 100% (8/8), 691 Bytes | 46,00 KiB / s, fertig. Insgesamt 8 (Delta 1), wiederverwendet 0 (Delta 0) entfernt: Auflösung von Deltas: 100% (1/1), erledigt.

  • [neuer Zweig] Master -> Master Zweig-Master, der eingerichtet wurde, um den Remote-Zweig-Master vom Ursprung aus zu verfolgen.

    It was successful. Try to create new u branch 
    
Malsha
quelle
0

Ich hatte das gleiche Problem, die Ursache war, dass ich vergessen habe, den Zweig anzugeben

git push myorigin feature/23082018_my-feature_eb
Schwarz
quelle
0

Für mich habe ich die Änderungen auf ein privates Repo übertragen, auf das ich keinen Schreibzugriff hatte. Stellen Sie sicher, dass Sie über die gültigen Zugriffsrechte verfügen, während Sie Push- oder Pull-Vorgänge ausführen.

Sie können direkt über überprüfen

Mayank Dhawariya
quelle
1
"Direkt überprüfen über" was?
Mike Poole
0

Für mich lag es daran, dass ich den versteckten .git- Ordner gelöscht hatte .

Ich habe es behoben, indem ich den Ordner gelöscht, neu geklont und die Änderungen erneut vorgenommen habe.

AmmarBaali
quelle
0

Wenn Sie sich in einem Zweig befinden, können Sie Folgendes verwenden:

git push origin head -u

Dadurch wird automatisch ein neuer Zweig mit demselben Namen auf der Fernbedienung erstellt.

Qwerty
quelle
-1

Um dieses Problem zu beheben, müssen Sie beim Auschecken des Codes gitden folgenden Befehl eingeben :

git checkout -b branchname origin/branchname

Hier stellen wir standardmäßig die Einstellung ein the upstream branch, damit Sie nicht mit dem genannten Problem konfrontiert werden.

Deepa
quelle
-2

Für mich kommt das Problem vom Namen meiner Filiale: "# Name meiner Filiale", ohne "#" funktioniert es einwandfrei!

aurelienv
quelle