Unable to Git-push master to Github - „origin” nie wygląda na repozytorium git / odmowa pozwolenia

84

To pytanie jest związane z moim problemem w zrozumieniu rebase, rozgałęzienia i scalania oraz z problemem

Jak możesz zaangażować się w swoje konto Github, skoro masz członka zespołu na zdalnej liście?

Dowiedziałem się, że inni ludzie mieli ten sam problem. Wydaje się, że problem jest związany z /etc/xinet.d/.

Problem: nie można przekazać oddziału lokalnego do oddziału głównego na Github

biegnę

git push origin master

dostaję

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

Komunikat o błędzie sugeruje mi, że gałąź „pochodzenia” nie znajduje się w moim lokalnym repozytorium git. W ten sposób Git przestaje łączyć się z Githubem.

To dziwne, ponieważ nie usunąłem „pochodzenia” gałęzi.

Moje drzewo git to

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

Jak możesz przenieść swój lokalny oddział do Github , skoro masz oddział członka zespołu w lokalnym Git?


Odpowiedź VonC rozwiązuje główny problem. Włożyłem hasła do moich kluczy SSH.

biegnę

$git push github master     

dostaję

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

Wygląda na to, że muszę jakoś podać hasło do Gita.

Jak sprawić, by Github pytał o twoje hasło zamiast polegać na kluczu ssh?

Léo Léopold Hertz 준영
źródło
Właśnie zaktualizowałem moją odpowiedź. Parametry SSH to nie wszystko. user.name i github.user też są ważne
VonC
Zaktualizowałem moją odpowiedź ponownie, dodając więcej testów konfiguracji ssh
VonC
„Odmowa dostępu (publickey)”. w rzeczywistości oznacza, że ​​próbowałeś zalogować się przy użyciu swojego klucza publicznego i odmówiono Ci pozwolenia, zamiast nie mieć dostępu do Twojego klucza publicznego.
Xiong Chiamiov
Moim problemem był inny klucz SSH z innego systemu. Wgrałem drugi klucz i wszystko było w porządku. Odkryłem to dzięki sztuczce ssh -v [email protected].
nalply

Odpowiedzi:

96

Co robi

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

zwraca (wykonywane w repozytorium git)?

Origin to tylko domyślna konwencja nazewnictwa odnosząca się do zdalnego repozytorium Git.

Jeśli nie odnosi się do GitHub (ale raczej ścieżka do repozytorium członków zespołu, ścieżka, która może być już nieważna lub niedostępna), po prostu dodaj inne źródło, jak w tym wpisie Bloggitation

$ git remote add origin2 [email protected]:myLogin/myProject.git
$ git push origin2 master

(Właściwie użyłbym nazwy „github” zamiast „pochodzenie” lub „pochodzenie2”)


Odmowa pozwolenia (publickey).
fatal: zdalny koniec niespodziewanie się rozłączył

Sprawdź, czy Twoja tożsamość gitHub jest poprawnie zadeklarowana w lokalnym repozytorium Git, jak wspomniano w przewodniku pomocy GitHub . (zarówno nazwa.użytkownika, jak i github.name - oraz github.token)

Następnie blog Stonean sugeruje (podobnie jak Marcio Garcia ):

$ cd ~/.ssh
$ ssh-add id_rsa

Aral Balkan dodaje: utwórz plik konfiguracyjny

Rozwiązaniem było utworzenie pliku konfiguracyjnego w ~ / .ssh /, jak opisano na dole sekcji OS X tej strony .

Oto plik, który dodałem, zgodnie z instrukcjami na stronie, a moje pchnięcia znowu zaczęły działać:

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

Możesz również opublikować wynik

ssh -v [email protected]

aby uzyskać więcej informacji, dlaczego połączenie GitHub ssh odrzuca Cię.

Sprawdź również, czy poprawnie wpisałeś swój klucz publiczny (musi kończyć się na ' ==').
Nie wklejaj swojego klucza prywatnego, ale swojego publicznego. Klucz publiczny wyglądałby mniej więcej tak:

ssh-rsa AAAAB3<big string here>== [email protected] 

(Uwaga: czy użyłeś hasła do kluczy SSH? Byłoby łatwiej bez hasła)

Sprawdź również adres URL używany podczas wypychania ( [email protected]/..., nie git://github.com/...)

Sprawdź, czy masz agenta SSH do użycia i zapisz klucz w pamięci podręcznej.

Spróbuj tego:

 $ ssh -i path/to/public/key [email protected]

Jeśli to zadziała, oznacza to, że twój klucz nie jest wysyłany do GitHub przez twojego klienta ssh.

VonC
źródło
1
szkoda, nie mogę na ciebie głosować więcej niż raz! Miałem ten problem dwa razy w ciągu dwóch tygodni i po wygooglowaniu go za każdym razem, gdy znalazłem ten wpis SO. DZIĘKI! :)
Ionuț Staicu
1
Zmagałem się z tym - zmieniłem całą konfigurację git, ale ssh-add był krokiem, którego brakowało - wielkie dzięki!
metadaddy
To była tylko drobna sugestia w kontekście tej wspaniałej odpowiedzi - ale uwielbiam zmianę nazwy „Origin” na „GitHub” (lub nazwa serwera), co naprawdę pomaga w konceptualizacji, dokąd wysyłasz rzeczy.
Alex C
Dla mnie to też zadziałało. Jeśli postępujesz zgodnie z instrukcjami na githubie, nie jest od razu oczywiste, jakie jest pochodzenie.
nick
help.github.com/win-set-up-git idź do końca - pomogło mi. Odmowa pozwolenia (publickey). - oznacza, że ​​skonfigurowałeś klucz ssh dla siebie na lokalnym komputerze. ssh-keygen -t rsa -C "[email protected]"
Roger Alien,
28

To jest problem z twoim pilotem. Kiedy to zrobisz git push origin master, originjest zdalny i masterjest gałęzią, którą pchasz.

Kiedy to robisz:

git remote

Założę się, że lista nie zawiera origin. Aby ponownie dodać pierwotnego pilota:

git remote add origin [email protected]:your_github_username/your_github_app.git

Lub, jeśli istnieje, ale jest nieprawidłowo sformatowany:

git remote rm origin
git remote add origin [email protected]:your_github_username/your_github_app.git
Sarah Mei
źródło
10

Odpowiedź VonC jest najlepsza, ale część, która zadziałała dla mnie, była bardzo prosta i jest trochę pogrzebana wśród wielu innych możliwych odpowiedzi. Jeśli jesteś podobny do mnie, napotkałeś ten problem podczas wykonywania samouczka „Pierwsze kroki z railsami” i NIE ustawiłeś publicznych / prywatnych kluczy SSH.

Jeśli tak, spróbuj tego:

  1. $>cd ~/.ssh

  2. $>ls

  3. Jeśli wyjście ls to known_hostsi nic więcej, odwiedź: http://help.github.com/mac-key-setup/ i zacznij postępować zgodnie z instrukcjami z sekcji „Generowanie klucza” i w dół.

Po uruchomieniu tych instrukcji moje polecenie „git push origin master” zadziałało.

johnnygoodman
źródło
właśnie szukałem tej strony. to dużo! = D
Hugo Mota
To rozwiązało mój problem. Mój system operacyjny to Mac OS X i śledziłem książkę „Ruby on Rails 3 Tutorial” i utknąłem w sekcji 1.3.4, kiedy potrzebowałem zrobić. git push origin master.To była moja pierwsza konfiguracja Git and Rails. Miejmy nadzieję, że pomogło to innym ludziom.
sivabudh
4

Mam ten sam problem i myślę, że zapora sieciowa blokuje protokół git. Więc w końcu muszę uciec się do używania https: // do pobierania i wysyłania. Jednak zawsze będzie to monitować użytkownika o wprowadzenie hasła ...

oto przykład, co działa dla mnie (tylko po to, aby podzielić się z tymi, którzy nie mogą użyć protokołu git: // :)

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

jeśli powyższe zadziała, możesz usunąć źródło i zastąpić

git remote rm origin  
git remote add origin https://[user-name]@github.com/[user-name]/[project].git
rozpoznać
źródło
1
Jeśli chcesz, możesz użyć ~/.netrcpliku do przechowywania hasła. Jest używany przez curl, czyli to, czego używa git do transferów HTTP (S), na wypadek, gdybyś musiał sprawdzić, jak go używać.
Arrowmaster
1
@Arrowmaster: pamiętaj, że jeśli korzystasz z systemu Windows, musisz użyć ~/_netrc(' _', nie ' .')
VonC,
Dzięki za komentarze, spróbuję!
ken
To zadziałało dla mnie. Dzięki. Zastanawiam się, czy to błąd, czy nie.
Larry Battle,
1

Myślę, że to kolejny przypadek mylących komunikatów o błędach git. Zwykle, gdy widzę ten błąd, jest to spowodowane problemami z ssh. Czy dodałeś publiczny klucz SSH do swojego konta github?

Edycja: Również post na forum xinet.d odnosi się do uruchomienia demona git jako usługi, aby ludzie mogli ściągać z twojego systemu. Nie jest konieczne uruchamianie git-daemon, aby wypchnąć na github.

Aaron
źródło
1
Dodałem klucz publiczny do mojego konta github. - Problem zaczął się po dodaniu zdalnej gałęzi do mojego Gita.
Léo Léopold Hertz 준영
1
Utworzyłem nową parę kluczy ssh. Wkleiłem nowy klucz do Githuba i usunąłem stary z Githuba. Ten sam problem nadal występuje.
Léo Léopold Hertz 준영
1

Mam ten sam problem i właśnie dodałem zawartość ~ / .ssh / id_rsa.pub do mojego konta w GitHub. Następnie spróbuj ponownie git push origin master, powinno działać.

Julio Menendez
źródło
0

Kluczową rzeczą do zapamiętania jest to, że „pochodzenie” nie jest wartością, której możesz potrzebować… zadziałało, gdy zastąpiłem „pochodzenie” nazwą repozytorium.

ATSiem
źródło
0

Jedną z możliwości, której powyższe odpowiedzi nie dotyczą, jest to, że możesz nie mieć dostępu ssh ze swojej powłoki. Oznacza to, że możesz znajdować się w sieci (niektóre sieci uniwersyteckie tak robią), w której usługa ssh jest zablokowana, w takim przypadku będziesz mógł nie tylko korzystać z usług github, ale także innych usług ssh. Możesz sprawdzić, czy to jest problem, próbując użyć innej usługi ssh, tak było w moim przypadku.

Sravan
źródło
0

Miałem ten problem i próbowałem różnych rozwiązań, w tym wielu z wymienionych powyżej (plik konfiguracyjny, debugowanie ssh itp.). Ostatecznie rozwiązałem to, włączając przełącznik -u w git push, zgodnie z instrukcjami github podczas tworzenia nowego repozytorium na miejscu - Github new Repository

sjpknight
źródło