Jak mogę się upewnić, że Git nie pyta mnie o nazwę użytkownika i hasło do GitHub?

171

Pracuję z repozytorium na GitHub i za każdym razem, gdy próbuję coś wypchnąć, prosi o moją nazwę użytkownika i hasło do GitHub. Nie chcę tego robić.

Wypróbowałem instrukcje dotyczące ustawiania adresu e-mail w Git , a mianowicie skonfigurowania zmiennych Git github.user i github.token, ale to nie miało znaczenia.

Nie rozumiem, dlaczego tak się dzieje.

Picardo
źródło

Odpowiedzi:

33

Musisz skonfigurować agenta ssh, dla którego wystarczy tylko raz uwierzytelnić. Zobacz odpowiedź na SO w Howto.

Benjamin Bannier
źródło
1
Ale to rozwiązanie dotyczy fraz ssh-family. Problem polega na tym, że git używa „git push”, który, jak zakładam, nie wyzwala agenta ssh. (Już to zrobiłem, więc wiem, że to nie działa.)
Picardo
2
@picardo: Zrobiłem to i rzeczywiście działa.
Daenyth,
213

Miałem dzisiaj podobny problem: zepsułem rzeczy w mojej kopii roboczej, więc postanowiłem zmienić nazwę katalogu i ponownie sklonować mój projekt z github. Ale po zrobieniu tego musiałem wprowadzić hasło, aby wykonać dowolne żądanie pull / push, zamiast wpisywać hasło tylko raz, tak jak kiedyś.

Stało się tak, ponieważ dzisiaj użyłem protokołu https do sklonowania projektu! Aby sprawdzić, jakiego protokołu używasz, po prostu uruchom

git config -l

i spójrz na linię zaczynającą się od „remote.origin.url”.

Aby przełączyć protokoły:

git config remote.origin.url [email protected]:the_repository_username/your_project.git

the_repository_usernamei your_projectnależy go zastąpić odpowiednią nazwą repozytorium i właścicielem tego repozytorium. Nazwa użytkownika będzie twoja, jeśli jesteś właścicielem repozytorium, lub nazwa użytkownika właściciela repozytorium w przeciwnym razie.

Sergio Morstabilini
źródło
5
To zadziałało dla mnie. Jedną rzeczą jest to, że adres URL nie zawiera mojej nazwy użytkownika, ale adres repo, jaki pojawia się na github:[email protected]:some-user/repo-name.git
B Siedem
1
Uwaga: Google mnie tu przywiodło. Miałem remote.origin.urlzestaw do metody https i nawet nie zauważyłem, że istnieją metody httpsvs. sshTen adres URL pomógł mi zobaczyć oczywiste: help.github.com/articles/…
Chris K
Czy jest jakiś sposób na podanie hasła?
zishe
P dla osób posiadających wiedzę git: Jakakolwiek różnica (lub preferencja) między git config remote.origin.url ...zastosowanym powyżej, a git remote set-url origin ...?
Daryn
Nie mogłem wymyślić, jak usunąć takie niewłaściwe pochodzenie. Odpowiedź brzmi:git remote rm origin
Vacilando,
30

Jeśli używasz HTTPS zamiast SSH, możesz wykonać następujące czynności:

  1. Znajdź swój zdalny adres URL (remote.origin.url) za pomocą

    git config -l
    

    dzięki Sergio Morstabilini

  2. Twój zdalny adres URL będzie wyglądał tak: https: // {NAZWA UŻYTKOWNIKA} @ github.com / {NAZWA UŻYTKOWNIKA} / {REPONAME} .git

  3. Wykonaj to polecenie:

    git config remote.origin.url https://{USERNAME}:{PASSWORD}@github.com/{USERNAME}/{REPONAME}.git
    
Eray
źródło
2
moja nazwa użytkownika zawiera @, nie działała dla mnie.
coding_idiot
Ale jeśli nie działa (nie musisz używać swojego adresu e-mail), działa idealnie! Dzięki.
Killah
4
Jeśli nazwa użytkownika zawiera @, musisz ją zakodować za pomocą adresu URL. meyerweb.com/eric/tools/dencoder
Tim Bodeit
1
Powinieneś pominąć swoje hasło ze względów bezpieczeństwa.
zygimantus,
3
uwaga, hasło zostanie zapisane w .git/configpliku jako zwykły tekst !
Amro
26

Wolę używać HTTPS, uważam to za łatwiejsze i bezpieczniejsze niż konfigurowanie kluczy ssh.

Korzystając z HTTPS, możesz uniemożliwić gitowi pytanie twojej nazwy użytkownika o piloty github w następujący sposób:

git config --global url."https://[email protected]".insteadOf "https://github.com"

Możesz przynajmniej zmniejszyć częstotliwość, o którą prosi git o hasło, używając:

git config --global credential.helper 'cache --timeout=28800'

Gdzie 28800 to 8 godzin. Korzystam z tej konfiguracji, aby wprowadzić hasło tylko raz, kiedy zaczynam dzień pracy.

Następnie będziesz mieć te wpisy w swoim ~/.gitconfig

[url "https://[email protected]"]
    insteadOf = https://github.com

[credential]
    helper = cache --timeout=28800

Źródło:

http://git-scm.com/docs/git-credential-cache

http://git-scm.com/docs/git-config

stefanmaric
źródło
6

Jeśli konfigurujesz klucz ssh dla github, jeśli nie jest to klucz domyślny, musisz dodać sekcję do ~/.ssh/config

Host *github.com
    User git
    IdentityFile ~/.ssh/github_id_rsa
Daenyth
źródło
6

Jeśli korzystasz z systemu Windows za pomocą protokołu HTTPS, wypróbuj Git Credential Store - używa Windows Credential Store do przechowywania twojego imienia i hasła.

Windows Credential Store for Git
This application is a small helper app designed to follow the 
git credentials API as defined by the Git Documentation.

Installation
1. Download the git-credential-winstore.exe application
2. Run it! If you have GIT in your PATH, it should just work.

Następnym razem, gdy wpiszesz swoje imię i hasło, zapamięta je dla Ciebie.

Brian Burns
źródło
1
Dziękuję Ci. Nazwa projektu została zmieniona na Git-Credential-Manager-for-Windows .
Michael S.
5

Ponadto, jeśli chcesz być monitowany o hasło za każdym razem, ale po prostu nie o nazwę użytkownika, skonfiguruj pilota jako HTTPS z nazwą użytkownika.

git config remote.origin.url https://[email protected]/repo_owner/repo_name

Następnie za każdym razem będziesz proszony o podanie hasła, ale nie o nazwę użytkownika.

Tak mi się podoba, ponieważ lubię być zmuszony do wpisywania hasła do github przed udostępnieniem go światu.

David Jeske
źródło
2

Sprawy wyglądają trochę inaczej, jeśli używasz uwierzytelniania dwuskładnikowego tak jak ja. Ponieważ nie znalazłem dobrej odpowiedzi gdzie indziej, przykleję ją tutaj, aby być może później.

Jeśli używasz uwierzytelniania dwuskładnikowego, wówczas podanie nazwy użytkownika / hasła nie zadziała - nastąpi odmowa dostępu. Możesz jednak użyć tokena dostępu do aplikacji i pomocnika git, aby go buforować. Oto odpowiednie linki:

I nie pamiętam, gdzie to widziałem, ale kiedy jesteś proszony o podanie nazwy użytkownika - tam przyklejasz token dostępu do aplikacji. Następnie pozostaw puste hasło. Pracowałem na moim komputerze Mac.

John Berryman
źródło
2

użyj SSH

Aby GitHub nie pytał o hasło podczas wypychania, najlepiej użyć SSH ( [email protected]:...) zamiast HTTPS URL ( https://github.com/...) i dodać swój klucz SSH do konta GitHub . Zobacz: Jakiego zdalnego adresu URL powinienem użyć?

GitHub - klon z SSH

pomocnik poświadczeń

W przeciwnym razie, jeśli naprawdę potrzebujesz użyć HTTPS, do buforowania hasła GitHub w Git , powinieneś użyć pomocnika poświadczeń, aby powiedzieć Gitowi, aby zapamiętał twoją nazwę użytkownika i hasło GitHub za każdym razem, gdy rozmawia z GitHub.

  • Mac: git config --global credential.helper osxkeychain( osxkeychain helperjest wymagany),
  • Windows: git config --global credential.helper wincred
  • Linux i inne: git config --global credential.helper cache

.netrc

Inną metodą jest skonfigurowanie użytkownika / hasła w ~/.netrc( _netrcw systemie Windows), np

machine github.com
login USERNAME
password PASSWORD

OAuth

Użyj tokenu OAuth ( token Personal API ), aby wprowadzić zmiany, np

git push https://[email protected]/foo/bar

Związane z:

kenorb
źródło
1

Również jeśli używasz systemu Windows, możesz użyć:

$ git config --global credential.helper wincred

wystarczy zalogować się jeszcze raz, a następnie git zapamięta.

William Earl Cheaqui
źródło
1

Pytanie o nazwę użytkownika jest dla mnie denerwujące, ale prośba o hasło jest miła, ponieważ zapewnia, że ​​naprawdę chcesz upublicznić swoje zmiany ...

Więc po prostu dodaję to do mojego „.gitconfig”

[url "https://[email protected]"]
    insteadOf = https://github.com
ViToni
źródło
0

Użyj Git Credential Manager dla Windows , jeśli korzystasz z Windows.

Ten projekt obejmuje :

  • Bezpieczne przechowywanie haseł w Windows Credential Store
  • Obsługa uwierzytelniania wieloskładnikowego dla usług Visual Studio Team Services
  • Obsługa uwierzytelniania dwuskładnikowego dla GitHub
  • Obsługa generowania i użytkowania tokenów dostępu osobistego dla Visual Studio Team Services i GitHub
  • Obsługa trybu nieinteraktywnego dla usług Visual Studio Team Services wspieranych przez katalog Azure
  • Uwierzytelnianie Kerberos dla Team Foundation Server
  • Opcjonalne ustawienia optymalizacji agenta kompilacji

Wystarczy pobrać najnowszą wersję i zainstalować ją.

Jak używać

Ty nie. Działa to magicznie, gdy potrzebne są poświadczenia.

Jalal
źródło