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.


Odpowiedzi:


33

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


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 git@github.com: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.


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:git@github.com: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
    

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://yourusername@github.com".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://yourusername@github.com"]
    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


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

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.


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://USERNAME@github.com/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.


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.


2

użyj SSH

Aby GitHub nie pytał o hasło podczas wypychania, najlepiej użyć SSH ( git@github.com:...) 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://4UTHT0KEN@github.com/foo/bar

Związane z:


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.


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://myusername@github.com"]
    insteadOf = https://github.com

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.