Impossibile eseguire Git-push master su Github: "origin" non sembra essere un repository Git / autorizzazione negata


84

Questa domanda è correlata al mio problema nella comprensione di rebase, branch e merge e al problema

Come puoi impegnarti per il tuo account GitHub se hai un compagno di squadra nel tuo elenco remoto?

Ho scoperto che altre persone hanno avuto lo stesso problema. Il problema sembra essere correlato a /etc/xinet.d/.

Problema: impossibile inviare il mio ramo locale al mio ramo principale su Github

io corro

git push origin master

ottengo

fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Il messaggio di errore mi suggerisce che il ramo "origin" non si trova nel mio repository git locale. In questo modo, Git smette di connettersi a Github.

Questo è strano, poiché non ho rimosso il ramo "origine".

Il mio albero git è

  dev
* master
  ticgit
  remotes/Math/Math
  remotes/Math/master
  remotes/origin/master
  remotes/Masi/master

Come puoi spingere il tuo ramo locale su GitHub , mentre hai un ramo di teamMate nel tuo Git locale?


La risposta di VonC risolve il problema principale. Ho messo un passphares alle mie chiavi ssh.

io corro

$git push github master     

ottengo

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Sembra che in qualche modo debba fornire la passphrase per Git.

Come puoi fare in modo che Github chieda la tua passphrase piuttosto che fare affidamento sulla chiave ssh?


Ho appena aggiornato la mia risposta. I parametri SSH non sono tutti. Anche user.name e github.user sono importanti
VonC

Ho aggiornato di nuovo la mia risposta, con altri controlli di configurazione ssh
VonC

"Autorizzazione negata (chiave pubblica)." in realtà significa che hai tentato di accedere utilizzando la tua chiave pubblica e il permesso è stato negato, invece di non essere autorizzato ad accedere alla tua chiave pubblica.
Xiong Chiamiov

Il mio problema era una chiave ssh diversa da un sistema diverso. Ho caricato l'altra chiave e tutto è andato bene. L'ho scoperto con il trucco ssh -v git@github.com.
2010

Risposte:


96

Cosa fa

$ git config --get-regexp '^(remote|branch)\.'

restituisce (eseguito nel tuo repository git)?

Origin è solo una convenzione di denominazione predefinita per fare riferimento a un repository Git remoto.

Se non fa riferimento a GitHub (ma piuttosto un percorso al repository del tuo compagno di squadra, percorso che potrebbe non essere più valido o disponibile), aggiungi semplicemente un'altra origine, come in questa voce di Bloggitation

$ git remote add origin2 git@github.com:myLogin/myProject.git
$ git push origin2 master

(In realtà userei il nome "github" anziché "origin" o "origin2")


Autorizzazione negata (chiave pubblica).
fatale: il terminale remoto si è bloccato in modo imprevisto

Controlla se la tua identità gitHub è dichiarata correttamente nel tuo repository Git locale, come menzionato nella guida della Guida di GitHub . (sia user.name che github.name - e github.token)

Quindi, stonean blog suggerisce (come fa Marcio Garcia ):

$ cd ~/.ssh
$ ssh-add id_rsa

Aral Balkan aggiunge: crea un file di configurazione

La soluzione era creare un file di configurazione in ~ / .ssh / come descritto nella parte inferiore della sezione OS X di questa pagina .

Ecco il file che ho aggiunto, secondo le istruzioni sulla pagina, e le mie push hanno ricominciato a funzionare:

Host github.com
User git
Port 22
Hostname github.com
IdentityFile ~/.ssh/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes

Puoi anche pubblicare il risultato di

ssh -v git@github.com

per avere maggiori informazioni sul motivo per cui la connessione ssh di GitHub ti rifiuta.

Controlla anche di aver inserito correttamente la tua chiave pubblica (deve terminare con " ==").
Non incollare la tua chiave privata, ma quella pubblica. Una chiave pubblica sarebbe simile a:

ssh-rsa AAAAB3<big string here>== tek...@gmail.com 

(Nota: hai usato una passphrase per le tue chiavi ssh? Sarebbe più facile senza una passphrase)

Controlla anche l'URL utilizzato quando premi ( git@github.com/..., not git://github.com/...)

Verifica di avere un agente SSH da utilizzare e memorizza nella cache la tua chiave.

Prova questo:

 $ ssh -i path/to/public/key git@github.com

Se funziona, significa che la tua chiave non è stata inviata a GitHub dal tuo client ssh.


1
peccato non poterti votare più di una volta! Ho avuto questo problema due volte in due settimane e dopo averlo cercato su Google ogni volta che ho trovato questo post SO. GRAZIE! :)
Ionuț Staicu

1
Stavo lottando con questo - avevo cambiato tutta la configurazione di git, ma ssh-add era il passaggio che mi mancava - grazie mille!
metadaddy

Era solo un piccolo suggerimento nel contesto di questa grande risposta, ma mi piace il fatto che rinominare "Origin" in "GitHub" (o servername) sia davvero di aiuto nel concettualizzare dove stai inviando le cose.
Alex C

Questo ha funzionato anche per me. Se segui le istruzioni su GitHub non è immediatamente ovvio quale sia l'origine.
nick

help.github.com/win-set-up-git segui fino alla fine - mi ha aiutato. Autorizzazione negata (chiave pubblica). - significa che hai impostato una chiave ssh per te git sulla tua macchina locale. ssh-keygen -t rsa -C "your_email@youremail.com"
Roger Alien

28

Questo è un problema con il telecomando. Quando lo fai git push origin master, originè il telecomando ed masterè il ramo che stai spingendo.

Quando lo fai:

git remote

Scommetto che l'elenco non include origin. Per aggiungere nuovamente il telecomando di origine:

git remote add origin git@github.com:your_github_username/your_github_app.git

Oppure, se esiste ma è formattato in modo errato:

git remote rm origin
git remote add origin git@github.com:your_github_username/your_github_app.git

10

La risposta di VonC è la migliore, ma la parte che ha funzionato per me è stata semplicissima ed è un po 'sepolta tra molte altre possibili risposte. Se sei come me, hai riscontrato questo problema durante l'esecuzione di un tutorial "per iniziare con rails" e NON avevi impostato le tue chiavi SSH pubbliche / private.

Se è così, prova questo:

  1. $>cd ~/.ssh

  2. $>ls

  3. Se l'output di ls è known_hostse nient'altro, visita: http://help.github.com/mac-key-setup/ e inizia a seguire le istruzioni dalla sezione "Generazione di una chiave" e giù.

Dopo aver eseguito queste istruzioni, il mio comando "git push origin master" ha funzionato.


stavo solo cercando questa pagina. grazie mille! = D
Hugo Mota,

Ha risolto il mio problema. Il mio sistema operativo è Mac OS X, e stavo seguendo il libro "Ruby on Rails 3 Tutorial", e sono rimasto bloccato alla sezione 1.3.4 quando avevo bisogno di fare un. git push origin master.Era la prima volta che configuravo Git e Rails. Si spera che questo abbia aiutato altre persone.
sivabudh

4

Ho lo stesso problema e penso che il firewall stia bloccando il protocollo git. Quindi alla fine devo ricorrere all'uso di https: // per recuperare e spingere. Tuttavia questo richiederà sempre all'utente di inserire la password ...

ecco l'esempio di cosa funziona per me (solo per condividere con quelli non posso usare git: // protocollo :)

git fetch https://[user-name]@github.com/[user-name]/[project].git

se quanto sopra funziona, puoi rimuovere l'origine e sostituirla con

git remote rm origin  
git remote add origin https://[user-name]@github.com/[user-name]/[project].git

1
È possibile utilizzare il ~/.netrcfile per memorizzare la password se lo si desidera. È usato da curl, che è ciò che git usa per i trasferimenti HTTP (S), nel caso in cui sia necessario cercare le specifiche su come usarlo.
Arrowmaster

1
@Arrowmaster: nota che se sei su Windows, devi usare ~/_netrc(' _', not ' .')
VonC

Grazie per i commenti, ci proverò!
ken

Questo ha funzionato per me. Grazie. Mi chiedo se questo sia un bug o meno.
Larry Battle

1

Penso che sia un altro caso di messaggi di errore git fuorvianti. Di solito quando ho visto quell'errore è dovuto a problemi di ssh. Hai aggiunto la tua chiave SSH pubblica al tuo account GitHub?

Modifica: Inoltre, il post del forum xinet.d si riferisce all'esecuzione di git-daemon come servizio in modo che le persone possano eseguire il pull dal sistema. Non è necessario eseguire git-daemon per eseguire il push su GitHub.


1
Ho aggiunto la mia chiave pubblica al mio account GitHub. - Il problema è iniziato dopo aver aggiunto un ramo remoto al mio Git.
Léo Léopold Hertz 준영

1
Ho creato una nuova coppia di chiavi ssh. Ho incollato la nuova chiave su GitHub e ho rimosso quella vecchia da GitHub. Lo stesso problema persiste.
Léo Léopold Hertz 준영

1

Ho avuto lo stesso problema e ho appena aggiunto il contenuto di ~ / .ssh / id_rsa.pub al mio account in GitHub. Dopodiché, riprova git push origin master, dovrebbe funzionare.


0

La cosa fondamentale da ricordare è che "origin" non è il valore che potresti dover utilizzare ... ha funzionato per me quando ho sostituito "origin" con il nome del repo.


0

Una possibilità che le risposte di cui sopra non riguardano è che potresti non avere un accesso ssh dalla tua shell. Cioè, potresti trovarti in una rete (alcune reti universitarie lo fanno) in cui il servizio ssh è bloccato.In tal caso non solo sarai in grado di ottenere servizi github ma anche qualsiasi altro servizio ssh. Puoi verificare se questo è il problema cercando di utilizzare qualsiasi altro servizio ssh. Questo è stato il mio caso.


0

Ho avuto questo problema e ho provato varie soluzioni per risolverlo, comprese molte di quelle elencate sopra (file di configurazione, debug ssh ecc.). Alla fine, l'ho risolto includendo l' opzione -u nel git push, secondo le istruzioni di github durante la creazione di un nuovo repository in loco - Github new Repository

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.