jak skonfigurować nazwę użytkownika i hasło dla różnych repozytoriów git?
17
─[$] cat ~/.gitconfig
[user]
name = Shirish Agarwal
email = [email protected]
[core]
editor = leafpad
excludesfiles = /home/shirish/.gitignore
gitproxy = \"ssh\" for gitorious.org
[merge]
tool = meld
[push]
default = simple
[color]
ui = true
status = auto
branch = auto
Teraz chcę umieścić poświadczenia git dla github, gitlab i gitorious, więc za każdym razem nie muszę sprawdzać poświadczeń w przeglądarce. Jak można to zrobić, aby było zautomatyzowane?
Powszechnym podejściem do obsługi uwierzytelniania git jest delegowanie go do SSH. Zazwyczaj ustawiasz swój klucz publiczny SSH w zdalnym repozytorium ( np. Na GitHub ), a następnie używasz go, ilekroć potrzebujesz uwierzytelnienia. Możesz oczywiście użyć kluczowego agenta, obsługiwanego przez środowisko pulpitu lub ręcznie za pomocą ssh-agenti ssh-add.
Aby uniknąć konieczności podawania nazwy użytkownika, możesz skonfigurować ją również w SSH, w ~/.ssh/config; na przykład mam
Host git.opendaylight.org
User skitt
a potem mogę sklonować za pomocą
git clone ssh://git.opendaylight.org:29418/aaa
(zwróć uwagę na brak nazwy użytkownika).
Za pomocą gitcredentials
Jeśli podejście SSH nie ma zastosowania ( np. Używasz repozytorium dostępnego przez HTTPS), git ma swój własny sposób obsługi poświadczeń, używając gitcredentials(i zwykle git-credential-store). Swoją nazwę użytkownika podajesz za pomocą
(określ, --globalczy chcesz używać tej konfiguracji wszędzie).
Następnie przy pierwszym dostępie do repozytorium git poprosi o podanie hasła, które zostanie zapisane (domyślnie w ~/.git-credentials). Kolejne dostępy do repozytorium będą używać zapisanego hasła zamiast pytania.
możesz trochę rozwinąć temat credential.${remote} i credential.helper. Czy jest jakaś dokumentacja, którą mógłbyś wskazać, ponieważ czytam o tym po raz pierwszy.
shirish
W odpowiedzi włączyłem linki do stron, to jest dokumentacja. ${remote}jest częścią URI protokołu i nazwy hosta, którą chcesz sklonować, helperwskazuje program pomocniczy.
wydaje się być podobny do tego, co Stephen Kitt udostępnił powyżej.
shirish
2
@shirish nie bardzo, trzeci punkt był tym, którego potrzebowałem - opcja, aby określić, gdzie znajdują się pliki.
Mārtiņš Briedis
@shirish; Ponadto instrukcje Kittsa nie określają un ustawiania poświadczeń, co było dla mnie kluczowym elementem, ponieważ ustawiłem je już globalnie.
SteveJ,
Miałem też z tym problem, ponieważ nie jest tak, jakby wszystkie repozytorium git. otrzymasz będzie z tego samego źródła / sklepu. Drugi jest lepszy, ale o wiele bardziej frustrujący do pracy w rzeczywistości. Nadal dziękuję za udostępnienie. @SteveJ
credential.${remote}
icredential.helper
. Czy jest jakaś dokumentacja, którą mógłbyś wskazać, ponieważ czytam o tym po raz pierwszy.${remote}
jest częścią URI protokołu i nazwy hosta, którą chcesz sklonować,helper
wskazuje program pomocniczy.Dla tych, którzy odkryli to później - miałem z tym trudności i wreszcie udało mi się to zadziałać
https / credentials.helper / Ubuntu
git config --global --unset credentials.helper
git config --unset credential.helper
Utwórz plik referencji dla każdego repozytorium: (wewnątrz każdego repozytorium)
Nie mówię, że to najlepszy lub jedyny sposób - ale zadziałało to dla mnie po kilku frustrujących godzinach.
źródło