Mam konto służbowe GitHub i konto osobiste. Najpierw użyłem osobistego do projektów testowych, potem ruszyłem dalej i utworzyłem repozytorium na drugim koncie na tym samym komputerze.
Teraz chciałem ponownie utworzyć nowe repozytorium na swoim koncie osobistym, zmieniłem globalne i lokalne user.name
oraz utworzyłem nową parę kluczy ssh, wprowadzoną na stronie konfiguracji GitHub. Następnie założyłem katalog
git init
git remote add origin <url>
git push origin
ale to teraz mi mówi
BŁĄD: Odmowa dostępu do użytkownika personaluser / newrepo.git
Nie mam pojęcia, jak drugie konto jest połączone z tym. .git/config
nie pokazuje żadnych workusername
powiązanych rzeczy.
Jeśli używasz systemu Windows 10, nie spiesz się, aby przeczytać odpowiedź Rajana.
git
permissions
github
Raz Faz
źródło
źródło
Odpowiedzi:
brzmi to bardzo podobnie do mojej obecnej pracy. wygląda na to, że masz już skonfigurowany oddzielny plik,
ssh-keys
więc musisz również utworzyć~/.ssh/config
plik i wypełnić go informacjami podobnymi do tego:Każda właściwość wydaje się dość oczywista, ale
IdentitiesOnly
jedna. Nie będę próbował wyjaśniać, do czego to służy, ale to jest w mojej obecnej konfiguracji i działa dobrze.Warto również zauważyć, że
Host URL
jest to tylko wskaźnik do przechwytywania prawidłowych ustawień użytkownika i nie ma żadnego wpływu na prawidłowe dostarczenie plików do docelowegoHostName
adresu URL.Teraz musisz tylko upewnić się, że Twój
origin
(lubremote
ogólnie) adres URL pasuje do prawidłowegoHost
adresu URL w odpowiednich repozytoriach, w zależności od nazwy użytkownika. Jeśli masz już osobiste repozytoria, możesz edytować.git/config
plik tego repozytorium w swoim edytorze tekstu:lub zrób to z linii poleceń:
Podobnie jak w Twojej pracy:
lub znowu, z linii poleceń:
Oczywiście zawsze możesz ustawić jeden ze swoich
Host
adresów URL w swoim~/.ssh/config
pliku jako zwykłyKiedyś tylko
work.github.com
łatwiej było widzieć relacje konfiguracyjne.Gdy wszystkie te elementy są ustawione, powinieneś być w stanie nacisnąć każdy odpowiedni pilot.
EDYTOWAĆ
Warto zauważyć, że właśnie się przekonałem, że jeśli kiedykolwiek ustawisz globalne wartości konfiguracyjne git dla swojej
user.email
wartości (i zgaduję,user.name
że wyśle również inną wartość), git pokaże twoje zatwierdzenia jako ten użytkownik poczty e-mail. Aby obejść ten problem, możesz zastąpić globalne ustawienia konfiguracji git w swoim lokalnym repozytorium:Powinno to teraz wysyłać zatwierdzenia jako właściwy użytkownik dla tego repozytorium.
źródło
Wybierz kolejno Panel sterowania> Konta użytkowników> Menedżer poświadczeń> Poświadczenia ogólne
usuń poświadczenia git. Następnie uruchom git push. Spowoduje to wyświetlenie monitu o podanie danych logowania git. Wprowadź poprawne poświadczenia.
źródło
control /name Microsoft.CredentialManager
w wierszu poleceńgit push
z błędem - cały czas rzuca te same błędy, nawet po restarcie terminala. Ale mimo wszystko dziękuję - zaoszczędziło mi to mnóstwo czasu na koniecMożesz też po prostu przełączyć się na https zamiast ssh. Jeśli używasz protokołu HTTPS, będzie to uwzględniać ustawienia .git / config. Więc w .git / config zmień:
url = [email protected]:USER/PROJECT.git
do
url = https://[email protected]/USER/PROJECT.git
(wartości te znajdują się na stronie projektu git, kliknij przyciski
SSH
i,HTTP
aby uzyskać nowe wartości);źródło
https
jest to, że musisz wpisać użytkownika / przepustkę za każdym razem, gdy robisz apush
, chyba że jest jakaś konfiguracja git, której nie jestem świadomygit push https://username:[email protected]/user/repo.git
też możesz to zrobić ... jeśli nie masz nic przeciwkopass
w swojej historii muszligithub identyfikuje cię po kluczu ssh, który widzi, a nie przez jakiekolwiek ustawienie z git.
Dlatego musisz upewnić się, że klucz ssh konta służbowego nie znajduje się w twojej bazie kluczy, gdy próbujesz push jako konto osobiste i odwrotnie. Służy
ssh-add -l
do określania, które klucze znajdują się w pęku kluczy, issh-add -d keyfile
do usuwania klucza z pęku kluczy.Być może będziesz musiał sprawdzić,
~/.ssh/config
czy skonfigurowałeś go tak, aby prezentował określone klucze ssh na github. Wreszcie, nie wiem, jak github radzi sobie z dwoma kontami mającymi ten sam klucz publiczny ssh, więc upewnij się, że tego nie robisz.źródło
GIT_SSH
zmiennej środowiskowej, aby powiedzieć gitowi, aby użył innego polecenia dla ssh; w szczególności możesz użyć określonego klucza. Zobacz główną stronę podręcznika git , a może to pytanie .ssh-add -d keyfile
Ostatnio miałem ten sam problem, ponieważ utworzyłem nowe konto na Github. Wypróbowałem powyższe odpowiedzi, ale to nie pomogło. Potem zobaczyłem gdzieś post o usuwaniu github z Keychain Access (tylko jeśli używasz Maca ). Kiedy wypycham, pytam o nazwę użytkownika i hasło i zadziałało!
źródło
Miałem ten sam problem. Okazuje się, że miałem dwa konta na GitHubie używające tego samego klucza SSH, a GitHub domyślnie używał niewłaściwego konta, które nie miało uprawnień do repozytorium, którego szukałem. Usunąłem klucz SSH z konta, którego nie używałem, wszystkie działały zgodnie z oczekiwaniami.
Możesz sprawdzić, na którym koncie GitHub się uwierzytelnia:
Dla mnie początkowo pokazywało to niewłaściwą nazwę użytkownika, ale po usunięciu zduplikowanego klucza SSH z tego konta, pokazało poprawną nazwę użytkownika, a moje pull i push do mojego repozytorium działały dobrze.
źródło
Wiem, że to może być trochę za późno, ale utknąłem z tym przez jakiś czas i ostatecznie naprawiłem to w ten sposób:
Przejdź do dostępu do pęku kluczy (osX)
wyszukaj git (upewnij się, że wybrałeś wszystkie elementy)
Mam nadzieję że to pomoże!
źródło
Oto sposób na zrobienie tego: możesz użyć różnych konfiguracji ssh dla różnych kont ssh.
Zaktualizowano 22 lutego:
Sprawdź ten link: https://gist.github.com/2351996
źródło
Jeśli zmiana klucza SSH skojarzonego z kontem nie działa, zmień adres e-mail powiązany z kontem.
Przejdź do Github> Ustawienia konta> E-maile i sprawdź, czy adres e-mail, którego używasz do zatwierdzenia, jest zgodny z adresem e-mail na koncie.
Aby zobaczyć, jakiego adresu e-mail używasz do zatwierdzenia, uruchom następujące polecenie:
git config --global user.email
. Jeśli chcesz zmienić adres e-mail, którego używasz do zatwierdzenia, uruchomgit config --global user.email "[email protected]"
.źródło
Mam ten sam problem. Poniżej przedstawiam, co się dzieje w moim przypadku:
Wcześniej git nie pytał o moje dane uwierzytelniające za każdym razem, gdy rozmawiam ze zdalnym repozytorium, w ten sposób: git config --global credential.helper wincred
Rozwiązałem problem, uruchamiając to samo polecenie z „none”, zastępując „wincred” git config --global credential.helper none
Następnie ponownie zapytaj git o moją nazwę użytkownika / hasło i wszystko pójdzie dobrze
źródło
Ja też miałem ten problem, ale żadne inne rozwiązanie nie zadziałało. Okazuje się, że do pracy stworzyliśmy
.netrc
plik, który zawierał wpisy do uwierzytelniania na githubie.git
Komenda zawsze używany.netrc
, który miał moją starą nazwę użytkownika i hasło. Musiałem edytować wpisy w moim.netrc
pliku, aby użyć nowej nazwy użytkownika i hasła.źródło
Znalazłem tymczasowe rozwiązanie, w którym najpierw uruchom,
killall ssh-agent
a następnie dodaj klucze ssh wygenerowane dla konta, którego potrzebujeszssh-add ~/.ssh/id_4shameer
Jest to jedyny sposób, w jaki możemy pracować na wielu kontach github, gdy otrzymamy błąd typu
ERROR: Permission to user/repo-git.git denied to username
.źródło
Nigdy nie miałem żadnych problemów z git, dopóki w pracy nie połączyli ostatnio naszych macbooków z Active Directory i dodali kilka kont administracyjnych do mojego komputera. Jednak po tym git będzie działał dobrze, dopóki nie zablokuję ekranu i wrócę. Wtedy dostałbym niejasny błąd podobny do
Mam tylko jeden klucz ssh na tej konkretnej maszynie dla mojego użytkownika i używam zsh w moim okresie. Adres e-mail i nazwa użytkownika były poprawne, więc to nie był problem. Ergo, ponowne uruchamianie po każdym zablokowaniu komputera jest daremne. Rozwiązaniem dla mnie była edycja pliku
.zshrc
pliku i odkomentowanie wiersza eksportującego klucz ssh (czego nigdy wcześniej nie musiałem robić i używam zsh od lat).Linia powinna wyglądać mniej więcej tak:
Gdy to zrobisz, po prostu uruchom
reset
terminal in i wszystko działa dobrze.Mam nadzieję, że to pomoże komuś innemu.
źródło
Chciałbym dodać - Jeśli pracujesz na koncie innego użytkownika, upewnij się, że dodajesz się do obszaru współpracowników w ustawieniach repozytoriów.
źródło
Napotkałem również ten problem i żadne z powyższych rozwiązań nie działało nawet po usunięciu klucza ssh i utworzeniu nowego. Okazuje się, że ssh-agent używał klucza z pamięci podręcznej, więc musiałem uruchomić,
killall ssh-agent
a potem zadziałało.Tutaj znalazłem rozwiązanie. http://fzysqr.com/2012/08/28/quick-tip-wrong-ssh-key-cached-with-github-after-changing-users-and-keys/
źródło