Git'in GitHub kullanıcı adımı ve şifremi sormamasını nasıl sağlayabilirim?


171

GitHub'ta bir repo ile çalışıyorum ve her ne zaman bir şeyler zorlamaya çalışsam GitHub kullanıcı adımı ve şifremi istiyor. Bunu yapmak istemiyorum.

E-postanızı Git'te ayarlamaya ilişkin talimatları denedim , yani Git değişkenlerini github.user ve github.token olarak ayarlayın, ancak bu bir fark yaratmadı.

Bunun neden olduğunu anlamıyorum.


Yanıtlar:


33

Sadece bir kez kimlik doğrulaması yapmanız gereken bir ssh-ajan kurmanız gerekir. Bir nasıl yapılacağı için SO'daki bu cevaba bakınız .


1
Ancak bu çözüm, ssh-aile cümleleri içindir. Sorun git git, ssh-agent'ı tetiklemeyen "git push" i kullanıyor, sanırım. (Bunu zaten yaptım, bu yüzden işe yaramadığını biliyorum.)
picardo

2
@picardo: Bunu yaptım ve gerçekten işe yarıyor.
Daenyth,

213

Bugün de benzer bir sorun vardı: Çalışma kopyasımdaki işleri bozdum, bu yüzden dizini yeniden adlandırmaya ve projemi tekrar github'dan klonlamaya karar verdim. Ancak bunu yaptıktan sonra, eskiden olduğu gibi bir kez parolaya girmek yerine herhangi bir çekme / gönderme isteği yapmak için şifremi girmek zorunda kaldım.

Çünkü bugün projeyi klonlamak için https protokolünü kullandım! Hangi protokolü kullandığınızı kontrol etmek için

git config -l

ve 'remote.origin.url' ile başlayan satıra bakın.

Protokolleri değiştirmek için:

git config remote.origin.url git@github.com:the_repository_username/your_project.git

the_repository_usernameve your_projectuygun havuz adı ve o havuzun sahibi ile değiştirilmelidir. Depoya sahipseniz kullanıcı adı, aksi takdirde havuz sahibinin kullanıcı adı sizin olacaktır.


5
Benim için çalıştı. Bir şey, url'nin benim kullanıcı adımı içermemesi, ancak github'da göründüğü gibi repo adresinin bulunmamasıdır:git@github.com:some-user/repo-name.git
B Seven

1
Not: Google beni buraya getirdi. Ben remote.origin.urlhttps yöntemine set vardı ve hatta httpsvs sshyöntemleri olduğunu fark etmedi bile . Bu URL bana açıkça görmemde
Chris K

Şifre girmenin de bir yolu var mı?
zishe,

Git bilgisine sahip olanlar için S: git config remote.origin.url ...Yukarıda kullanılanlar arasında herhangi bir fark (veya tercih) var git remote set-url origin ...mı?
Daryn

Böyle yanlış bir kökün nasıl kaldırılacağını çözemedim. Cevap:git remote rm origin
Vacilando

30

SSH yerine HTTPS kullanıyorsanız, bunu takip edebilirsiniz:

  1. Uzak URL'nizi (remote.origin.url) ile bulun

    git config -l
    

    Sergio Morstabilini'ye teşekkürler

  2. Uzak URL’niz bu şekilde olacaktır: https: // {USERNAME} @ github.com / {USERNAME} / {REPONAME} .git

  3. Bu komutu yürütün:

    git config remote.origin.url https://{USERNAME}:{PASSWORD}@github.com/{USERNAME}/{REPONAME}.git
    

2
kullanıcı adımın kendisi içeriyor @, benim için işe yaramadı.
coding_idiot

Ancak, (e-postanızı kullanmanıza gerek kalmazsa) mükemmel çalışıyor! Teşekkürler.
Killah

4
Kullanıcı adınız bir @ içeriyorsa, URL'yi kodlamanız gerekir. meyerweb.com/eric/tools/dencoder
Tim Bodeit

1
Güvenlik nedeniyle şifrenizi atlamalısınız.
zygimantus

3
Dikkat, şifre .git/configdosya içinde düz metin olarak saklanacaktır !
Amro

26

HTTPS kullanmayı tercih ediyorum, ssh anahtarlarını ayarlamaktan daha kolay ve daha güvenli buluyorum.

HTTPS kullanarak, git'in aşağıdakilerle github uzaktan kumandaları için kullanıcı adınızı sormasını engelleyebilirsiniz:

git config --global url."https://yourusername@github.com".insteadOf "https://github.com"

Ve en azından, şifreniz için sorulan sıklığı aşağıdakilerle azaltabilirsiniz:

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

28800 8 saattir. Çalışma günüme başladığımda şifremi sadece bir kez girmek için bu ayarı kullanıyorum.

Bundan sonra, bu girişleri içinde ~/.gitconfig

[url "https://yourusername@github.com"]
    insteadOf = https://github.com

[credential]
    helper = cache --timeout=28800

Kaynak:

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

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


6

Github için bir ssh anahtarı kurduğunuzda, eğer varsayılan anahtarınız değilse, telefonunuza bir bölüm eklemeniz gerekir. ~/.ssh/config

Host *github.com
    User git
    IdentityFile ~/.ssh/github_id_rsa

6

Windows'ta HTTPS kullanıyorsanız Git Kimlik Bilgisi Deposunu deneyin; adınızı ve şifrenizi saklamak için Windows Kimlik Bilgileri Deposunu kullanır.

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.

Ardından adınızı ve şifrenizi bir daha girdiğinizde, sizin için onları hatırlayacaktır.


1
Teşekkür ederim. Proje, Windows için Git-Kimlik Bilgisi-Yöneticisi olarak yeniden adlandırıldı .
Michael S.,

5

Ayrıca, şifreniz her zaman istenir ancak kullanıcı adınız olmasa da, istenirse, uzaktan kumandayı bir kullanıcı adıyla HTTPS olarak yapılandırın.

git config remote.origin.url https://USERNAME@github.com/repo_owner/repo_name

Bundan sonra, her seferinde şifreniz istenecektir ancak kullanıcı adınız değil.

Bu şekilde tercih ediyorum, çünkü github şifremi dünya ile paylaşmadan önce yazmak zorunda kalıyorum.


2

Benim gibi 2 faktörlü auth kullanıyorsanız, işler biraz farklıdır. Başka bir yerde iyi bir cevap bulamadığım için, bir tane daha ekleyeceğim, belki daha sonra bulabilirim.

2 faktörlü auth kullanıyorsanız, kullanıcı adı / şifreyi belirlemek etkinlik çalışması yapmaz - erişim reddedilir. Ancak, bir uygulama erişim belirtecini kullanabilir ve git'in kimlik bilgileri yardımcısını sizin için önbelleğe almak için kullanabilirsiniz. İşte ilgili bağlantılar:

Bunu nerede gördüğümü hatırlamıyorum ama kullanıcı adınızı sorduğunuzda - uygulama erişim belirtecini yapıştırdığınız yer. Ardından şifreyi boş bırakın. Mac'imde çalıştım.


2

SSH kullan

GitHub'a basarken şifre sormasını önlemek için, ideal olarak HTTPS URL ( ) yerine SSH ( git@github.com:...) kullanmalı https://github.com/...ve SSH anahtarınızı GitHub hesabınıza eklemelisiniz . Bkz: Hangi uzak URL'yi kullanmalıyım?

GitHub - SSH ile klonlama

bir referans yardımcı

Aksi takdirde , GitTub şifrenizi Git'te önbelleğe almak için gerçekten HTTPS kullanmanız gerekiyorsa , GitHub kullanıcı adınızı ve şifrenizi GitHub ile her konuştuğunda hatırlamanız için Git'e bir kimlik bilgisi yardımcısı kullanmalısınız .

  • Mac: git config --global credential.helper osxkeychain( osxkeychain helpergerekli),
  • Pencereler: git config --global credential.helper wincred
  • Linux ve diğer: git config --global credential.helper cache

.netrc

Başka bir yöntem, kullanıcı adınızı / şifrenizi ~/.netrc( _netrcWindows'ta), örn.

machine github.com
login USERNAME
password PASSWORD

OAuth

Kullanım OAuth kodu ( Kişisel API jetonu ) değişiklikler yapmak için, örneğin

git push https://4UTHT0KEN@github.com/foo/bar

İlgili:


1

Ayrıca, Windows kullanıyorsanız, şunları kullanabilirsiniz:

$ git config --global credential.helper wincred

sadece bir kez daha oturum açmanız gerekiyor, sonra git hatırlayacaktır.


1

Kullanıcı adını sormak benim için can sıkıcı bir durum, ancak şifre sormak hoş bir şey, çünkü yaptığınız değişikliklerle herkese açık olmak isteyin ...

Bu yüzden bunu sadece ".gitconfig" a ekliyorum.

[url "https://myusername@github.com"]
    insteadOf = https://github.com

0

Windows'daysanız , Git Credential Manager for Windows kullanın .

Bu proje şunları içerir :

  • Windows Kimlik Bilgileri Deposunda güvenli parola depolaması
  • Visual Studio Team Services için çok faktörlü kimlik doğrulama desteği
  • GitHub için iki faktörlü kimlik doğrulama desteği
  • Studio Access Services ve GitHub için Kişisel Erişim Simgesi oluşturma ve kullanma desteği
  • Azure Dizini tarafından desteklenen Visual Studio Team Services için etkileşimli olmayan mod desteği
  • Team Foundation Server için Kerberos kimlik doğrulaması
  • Yapı aracı optimizasyonu için isteğe bağlı ayarlar

Basitçe son sürümünü indirmek ve kurun.

Nasıl kullanılır

Sen değil. Bu sihirli kimlik bilgileri gerektiğinde çalışır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.