fatale: l'attuale branch master non ha branch upstream


227

Sto cercando di spingere uno dei miei progetti su github e continuo a ricevere questo errore:

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

Quindi l'ho provato e ho ottenuto questo:

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

fatal: Authentication failed

Un altro thread di StackOver mi ha suggerito di provare quanto segue, con risultati deludenti.

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

fatal: Authentication failed

Quindi ho provato questo:

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

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

fatal: Authentication failed

Qualche suggerimento?


1
Il repository deve esistere su github prima che tu possa spingerlo. Vero? Ed è il repository con cui stai lavorando con un clone?
matt

Ho clonato il repository da Github, quindi ho aggiunto 1 riga a un file Leggimi e quindi ho provato a respingerlo.
user1524361

1
stavo ottenendo lo stesso errore perché avevo dimenticato di eseguire il commit dei file
Mateen

3
-u e --set-upstream sono uguali
brainLoop

Volevo far sapere a tutti i gitcomandi che l'OP ha pubblicato mi ha aiutato, anche più delle risposte
Nathan l'

Risposte:


94

Hai risolto il push, ma, indipendentemente da quel problema push (che ho spiegato in " Perché devo spingere esplicitamente un nuovo ramo? ": git push -u origin masterOppure git push -u origin --all), devi ora risolvere il problema di autenticazione.

Dipende dal tuo URL (ssh come in ' git@github.com/yourRepo, o https come in https://github.com/You/YourRepo)

Per https url:

Se il tuo account è protetto dall'autenticazione a due fattori , la tua password normale non funzionerà (per url https), come spiegato qui o qui .

Stesso problema se la password contiene caratteri speciali (come in questa risposta )

Se https non funziona (perché non vuoi generare una chiave secondaria, un PAT: token di accesso personale), puoi passare a ssh, come ho mostrato qui .


Come notato da qwerty nei commenti, è possibile creare automaticamente il ramo con lo stesso nome sul telecomando con:

git push -u origin head 

Perché?

  • HEAD (consultare il .git\HEADfile) ha la refspec del ramo attualmente controllato (ad esempio: ref: refs/heads/master)
  • la politica push predefinita è semplice

Poiché il refpec utilizzato per questo push è head: (nessuna destinazione), un :<dst>mezzo mancante per aggiornare lo stesso ref del <src>(head, che è un ramo).

Ciò non funzionerà se HEAD è staccato però.


1
fantastico, questo è ciò di cui abbiamo bisogno per risolvere il problema della causa principale, non solo per risolverlo in superficie
workplaylifecycle

Se sei su qualsiasi ramo, questo è utile git push origin head -u. Crea automaticamente il ramo con lo stesso nome sul telecomando.
Qwerty,

1
@Qwerty Grazie, buon punto. Ho incluso il tuo commento (con ulteriori dettagli) nella risposta per una maggiore visibilità.
VonC

115

Inoltre puoi usare il seguente comando:

git push -u origin master

Ciò crea (-u) un altro ramo nel repository remoto. Una volta eseguita l'autenticazione tramite ssh, lo è.


2
Questo è davvero rilevante per il problema, poiché il problema è con l'autenticazione. Ha anche affermato di averlo già provato nel suo posto.
Mike Precup,

2
Ho effettuato il downgrade per 2 motivi. 1o: l'OP ha dichiarato di aver già provato questo. Secondo: -uopzione è il collegamento per l' --set-upstreamopzione che non ha nulla a che fare con la creazione di un nuovo ramo. Dalla documentazione dell'opzione -uo--set-upstream : "Per ogni ramo aggiornato o inviato correttamente, aggiungi il riferimento upstream (tracking), usato da git-pull [1] senza argomenti e altri comandi". In realtà non capisco perché questa risposta sia stata votata così tanto in quanto fuorviante.
louisfischer, l'

38

Apparentemente ricevi anche questo messaggio di errore quando dimentichi il --allparametro quando premi per la prima volta. scrissi

git push -u origin

che ha dato questo errore, avrebbe dovuto essere

git push -u origin --all

Oh, come adoro questi errori di copia-incolla ...


3
Grazie. Stavo ottenendo questo errore in Visual Studio Code e questo ha funzionato, ma nel contesto di più sviluppatori qualcuno può spiegare cosa ha fatto?
Hell.Bent,


13

Si prega di provare questo scenario

git push -f --set-upstream origin master

7
Dovresti fornire ulteriori spiegazioni su come e perché funziona.
Benoît Latinier,

6
"non male" è una spiegazione davvero brutta per qualsiasi cosa. "non male" rende la tua risposta davvero pessima.
GhostCat

Questo non fa nulla per affrontare l'errore OP menzionato: "Autenticazione fallita"
Sean the Bean

Sì. Ha funzionato per me. Penso che questo stia forzando il commit verso il ramo (remoto) a monte.
vkg,

12

Se si definisce l'azione git push da intraprendere se non viene fornito refspec sulla riga di comando, nessun refspec è configurato nel telecomando e nessuna refspec è implicita in nessuna delle opzioni fornite nella riga di comando.

Fallo e basta:

git config --global push.default current

poi

git push

1
Devi essere consapevole del fatto che ciò modifica le tue impostazioni globali di git, che possono avere alcuni effetti negativi. Ma era esattamente quello che cercavo.
Mavamaarten,

@Mavamaarten quali sono i potenziali effetti avversi?
Kosii,

7

Bene, stavo avendo lo stesso problema durante il caricamento e l'ho risolto facendo la stessa cosa che dice di fare: Prima stavo provando a passare attraverso il terminale al mio repository in Linux da https come

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

Ma non ottenevo alcun risultato e quindi sono andato più a fondo e ho provato:

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

E ha funzionato. Quindi ti verrà chiesto con nome utente e password. Ho anche generato un token e invece di Password ho incollato il token e, quindi, fatto con successo.

  1. Per generare un token, vai al tuo account Github e nelle Impostazioni sviluppatore, quindi crea un altro token.
  2. Dopo averlo ottenuto, copia quel token e incollalo nella richiesta della password quando ti viene chiesto.

6

da un lato molto semplice, una volta che hai altri rami, non puoi semplicemente usare per spingere un ramo

git push

Ma devi specificare il ramo ora, anche se hai il checkout del ramo che vuoi spingere, quindi

git push origin <feature_branch>

Dove può essere anche il masterramo


5

Ho fatto il semplice errore di dimenticare di impegnarmi:

git commit -m "first commit"

poi ha git push origin masterfunzionato.


4

Ho avuto lo stesso problema

inserisci qui la descrizione dell'immagine

L'ho risolto quello usato sotto il comando

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

e aggiungerà una configurazione nel file di configurazione nella cartella .git.

inserisci qui la descrizione dell'immagine



3

C'è una soluzione semplice per questo che ha funzionato per me su macOS Sierra. Ho fatto questi due comandi:

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

Se mostra un errore fatale relativo all'upstream dopo qualsiasi spinta futura, esegui semplicemente:

git push --set-upstream origin master

0

1. Un computer e il tuo github associati. Usa SSH. Codice del computer, quindi non è necessario inviare la descrizione dell'immagine inserita verificata qui

2. git non può gestire una cartella vuota. Quindi devi scrivere un file readme.md salvato in un file. Altrimenti non troverai il file.

3. Il tuo progetto locale non è niente di nuovo. per favore

git init

git remote add origin +"githublink"

git add .

git commit -m "" vai ancora.

4. poi git pull origin master(la chiave)

5. Finalmente git push origin master(risolvi tutti i problemi).

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


0

Se si sta tentando di inviare il codice direttamente al ramo principale, utilizzare il comando

git push origin master

Mi aiuta.


0

Ho anche avuto lo stesso errore. Penso che sia stato perché l'ho clonato e ho provato a respingere. $ git push -u origin master Questo è il comando giusto. Prova

Conteggio degli oggetti: 8, fatto. Compressione delta utilizzando fino a 2 thread. Comprimere oggetti: 100% (4/4), fatto. Scrittura di oggetti: 100% (8/8), 691 byte | 46,00 KiB / s, fatto. Totale 8 (delta 1), riutilizzato 0 (delta 0) remoto: risoluzione dei delta: 100% (1/1), fatto.

  • [nuovo ramo] master -> master Branch master impostato per tenere traccia del master branch remoto dall'origine.

    It was successful. Try to create new u branch 
    

0

Ho avuto lo stesso problema, la causa è che ho dimenticato di specificare il ramo

git push myorigin feature/23082018_my-feature_eb

0

Per me, stavo spingendo le modifiche a un repository privato a cui non avevo accesso in scrittura. Assicurarsi di disporre dei diritti di accesso validi durante le operazioni push o pull.

Puoi verificare direttamente tramite


1
"Verifica direttamente tramite" cosa?
Mike Poole,

0

Per me, è stato perché avevo eliminato la cartella nascosta .git .

L'ho risolto eliminando la cartella, ri-clonando e ri-apportando le modifiche.


0

Se ci si trova in qualsiasi ramo, è possibile utilizzare questo:

git push origin head -u

Ciò creerà automaticamente un nuovo ramo con lo stesso nome sul telecomando.


-1

Per risolvere questo problema, mentre si estrae il codice da gitse stesso, è necessario dare il comando come di seguito:

git checkout -b branchname origin/branchname

Qui, per impostazione predefinita, stiamo impostando the upstream branch, quindi non dovrai affrontare il problema menzionato.


-2

Per me il problema deriva dal nome del mio ramo: "# name-of-my-branch", senza "#" funziona benissimo!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.