Znajomy i ja dzielimy się moim komputerem. Wykonałem wypychanie do GitHub przy użyciu powłoki git bash w systemie Windows 7. Teraz jesteśmy w innym projekcie na tym komputerze i potrzebuję jej, aby przesłała dane na jej konto. Ale ciągle próbuje użyć mojej nazwy użytkownika i mówi, że nie mam dostępu do jej repozytorium:
$ git push her_github_repository our_branch
ERROR: Permission to her_username/repository.git denied to my_username.
fatal: The remote end hung up unexpectedly
git config --global user.name her_username
) przed pchaniemgit config --local credential.helper ""
może załatwić sprawę.Odpowiedzi:
Jeśli używasz innego użytkownika systemu Windows, Twój klucz SSH i ustawienia git będą niezależne.
Jeśli nie masz takiej możliwości, znajomy powinien dodać Twój klucz SSH do swojego konta Github.
Chociaż poprzednie rozwiązanie sprawi, że będziesz naciskać tak samo jak ty, ale pozwoli ci wejść do jej repozytorium. Jeśli nie chcesz tego i pracujesz w innym folderze na tym samym komputerze, możesz ustawić nazwę użytkownika i e-mail lokalnie w folderze za pomocą git, usuwając
-g
flagę polecenia config:Alternatywnie, jeśli przepchniesz
https
protokół, Github za każdym razem zapyta o nazwę użytkownika / hasło (chyba że używasz menedżera haseł).źródło
git config --global user.name "Mona Lisa"
To zadziałało dla mnie, zapyta o nazwę użytkownika i hasło
źródło
helper = cache --timeout=999999
ustawione na moim.gitignore
i to działało. Ale jakikolwiek sposób, aby zresetować to bez zmiany lokalnej konfiguracji, zastanawiam się?credential.helper
, np. Magazyn poświadczeń systemu Windows. Oznacza to również, że prosi o nazwę użytkownika / hasło za każdym razem, gdy tego potrzebuje, ponieważ nic nie jest skonfigurowane, więc może możeszcredential.helper
zamiast tego skonfigurować pamięć podręczną (patrz odpowiedź @Ciro Santilli) lub użyć innej odpowiedzi tutaj.Możesz pushować używając innego konta. Na przykład, jeśli Twoje konto to A, które jest przechowywane w .gitconfig i chcesz użyć konta B, które jest właścicielem repozytorium, które chcesz przekazać.
Konto B : B_user_name, B_password
Przykład linku SSH: https://github.com/B_user_name/project.git
Push z kontem B to:
Aby zobaczyć konto w .gitconfig
$git config --global --list
$git config --global -e
(aby zmienić konto również)źródło
user.name
,user.email
w lokalnej konfiguracji, mam sklonowany z nazwą użytkownika, a nie pracuje; teraz ostatnia odpowiedź działa bez dotykania pęku kluczy / czegokolwiek ... wGit 2.9.0 in Windows
. „w końcu, ale nie najmniej”… tak to się nazywa. Dziękuję Ci. Ta odpowiedź zasługuje na więcej głosów.https://'B_user_name'@github.com/B_user_name/project.git
. Powinno to spowodować wyświetlenie monitu o hasłoB_user_name
.Konfiguruję alias ssh przy użyciu niestandardowego
IdentityFile
i przepisuję źródło, aby używać mojej niestandardowejme-github
nazwy hosta.źródło
git remote set-url origin git@user1-github:user1/my-repo.git
😊Jeśli używasz adresu URL SSH (
[email protected]:username/projectname.git
) zamiast adresu URL HTTPS, możesz tymczasowo określić inny klucz SSH za pomocą$GIT_SSH_COMMAND
zmiennej środowiskowej:O ile wiem, w przypadku adresów URL SSH, GitHub nie dba o nazwy użytkowników, tylko o klucze: jeśli konto użytkownika ma dostęp do repozytorium, a to konto ma klucz SSH (patrz strona kluczy SSH na koncie settings), to jeśli użyjesz tego klucza SSH do wypychania do tego repozytorium, wypychanie będzie traktowane jako pochodzące od tego użytkownika.
źródło
user.name
iuser.email
ingit config
zmieni konto, z którym związane jest zatwierdzenieJeśli po uruchomieniu
git push
Git prosi o hasłouser
, ale chcesz wypchnąć jakonew_user
, możesz użyćgit config remote.origin.url
:W tym momencie użyj,
^C
aby wyjśćgit push
i użyj follow, aby nacisnąć jakonew_user
.źródło
git config remote.origin.url https://[email protected]/different_user/repo.git
To proste podczas klonowania, weź adres URL git ze swoją nazwą użytkownika, a po zatwierdzeniu zapyta o nowe hasło użytkownika.
Na przykład:
git clone https: // [email protected]/nazwa_uzytkownika/nazwa_reponatora.git
git clone https: //[email protected]/username/reponame.git
źródło
fatal: repo not found
.jeśli to jest twój problem
Oprócz zmiany nazwy użytkownika i adresu e-mail z terminala za pomocą git config:
musisz usunąć informacje autoryzacyjne z pęku kluczy. Zrozumienie tego rozwiązania zajęło mi kilka godzin, okazało się, że mam również certyfikat w swoim pęku kluczy.
Otwórz dostęp do pęku kluczy, kliknij Wszystkie elementy i wyszukaj git. Usuń cały pęk kluczy
źródło
Używałem jednej maszyny do przesyłania kodu do dwóch różnych kont GitHub z różnymi nazwami użytkownika. Zakładając, że masz już skonfigurowane jedno konto i chcesz dodać nowe:
ssh-keygen -t rsa -C "[email protected]"
id_rsa
. Nadaj mu inną nazwę, npid_rsa_another
ssh-add ~/.ssh/id_rsa_another
touch ~/.ssh/config
i edytuj plik, dostarczając konfiguracje do swoich kont:Teraz powinieneś być w stanie push z różnych kont w zależności od tego, jaki klucz dodasz do agenta ssh, tj. Aby użyć swojego pierwszego konta, zrób
ssh-add ~/.ssh/id_rsa
.Możesz również zmienić adres e-mail użytkownika:
git config --global user.email "[email protected]"
lub wyczyść klucze ssh w przypadku błędu uprawnień podczas wysyłania kodu na jedno z kont:
ssh-add -D
źródło
git push
działa? Po dodaniu klucza powinieneś móc pchnąćIdź do Credential Manager Idź do Windows Credentials Usuń wpisy w Generic Credentials Spróbuj połączyć się ponownie.
źródło
Control Panel\All Control Panel Items\Credential Manager
->Windows Credentials
.Jak wspomniano wcześniej, możesz użyć
aby ręcznie ustawić nazwę użytkownika i adres e-mail dla pojedynczego repozytorium, ale musisz dodać to polecenie:
jeśli już próbowałeś naciskać przed zmianą. W przeciwnym razie zmiany nie pojawią się w pliku konfiguracyjnym.
źródło
--reset-author
(Z--
...) położy ostatnią skonfigurowaną nazwę / e-mail na ostatni popełnienia, a także najnowszy znacznik czasu. Nie wpływa na zmiany w pliku konfiguracyjnym.Możesz dodać nowy zdalny adres URL dla innej nazwy użytkownika za pomocą
git remote add origin-username https://[email protected]/repository_name.git
Po tym, jeśli będziesz naciskać używając
git push -u origin-username master
, pojawi się monit o podanie hasła.źródło
git config nazwa.użytkownika zmienia tylko nazwę, którą zatwierdzam. Nadal nie mogę naciskać. Tak to rozwiązałem i myślę, że jest to dla mnie łatwa droga.
Wygeneruj klucz SSH pod nazwą użytkownika, którą chcesz wypchnąć na komputerze, którego będziesz używać https://help.github.com/articles/connecting-to-github-with-ssh/
Dodaj ten klucz do konta użytkownika github, na które chcesz wysłać https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/
Wybierz klonowanie za pomocą SSH
Możesz teraz wepchnąć jako ten użytkownik do tego repozytorium.
źródło
Jeśli w systemie Windows i użytkownik Git for Windows i
manager
do zarządzania poświadczeniami (inaczejGit-Credential-Manager-for-Windows
Link ), problem polega na tym, że nie ma łatwego sposobu przełączania się między użytkownikami podczas wypychania do GitHub zahttps
pomocąOAuth
tokenów.Powodem jest to, że token jest przechowywany jako:
git:https://github.com
Personal Access Token
OAuth_Token
Odmiany adresu URL w programie
Internet Address
nie działają, na przykład:git:https://[email protected]
git:https://github.com/username
Rozwiązanie: przestrzenie nazw . Można to znaleźć w szczegółach konfiguracji
Git-Credential-Manager-for-Windows
:Cytując z tego:
Teraz zapisz swoje poświadczenia w Menedżerze poświadczeń systemu Windows jako:
git.username:https://github.com
Personal Access Token
OAuth_Token
Zauważ, że zmieniliśmy:
git
->git.username
(gdzie zmieniaszusername
swoją rzeczywistą nazwę użytkownika lub ze względu na to, na cokolwiek chcesz jako unikalny identyfikator)Teraz w repozytorium, w którym chcesz użyć określonego wpisu, wykonaj:
(Ponownie ... zastąp
username
żądaną wartością)Twoja
.git/config
wola będzie teraz zawierać:Zrobione! Właściwe dane uwierzytelniające zostaną pobrane ze sklepu poświadczeń systemu Windows.
To oczywiście nie zmienia, który użytkownik / e-mail przesyła. W tym celu musisz skonfigurować zwykłe
user.name
iuser.email
źródło
git config credential.namespace git.username
jak wspomniano (zastępując nazwę użytkownika). Jeśli następnym razem pchniesz, git poprosi Cię o podanie nowych danych logowania dla nazwy użytkownika.Nie mogłem wymyślić, jak mieć drugą tożsamość na githubie na jednym komputerze (żadna z tych odpowiedzi nie zadziałała w moim przypadku), ale wymyśliłem, jak mogę naciskać na wiele różnych kont github, tak jak ja.
Wypchnij tę samą nazwę użytkownika, ale na różne konta github
Skonfiguruj drugi klucz SSH (w ten sposób ) dla swojego drugiego konta github
Zmiana między kontami w ten sposób:
Wciśnij moje nowe drugie konto na githubie
Push z moim głównym kontem
źródło
Jeśli masz https://desktop.github.com/
, możesz przejść do Preferencji (lub Opcje) -> Konta,
a następnie wylogować się i zalogować.
źródło
Identyfikator użytkownika, w którym następuje zatwierdzenie, jest przechowywany w pliku konfiguracyjnym.
przejdź na górę repozytorium vi .git / config
zmień linię adresu URL wymienioną po „[zdalne” źródło ”], aby miała odpowiedni identyfikator użytkownika
źródło
Jeśli używasz ssh i pobierz
chociaż nie chcesz push jako Alice_username, upewnij się, że Alice_username nie ma klucza ssh twojego komputera dodanego do konta github.
Usunąłem klucz SSH z konta Alice na githubie i funkcja push działała.
źródło