Git her bastığımda kullanıcı adı ister


675

Repo'mun içine girmeye çalıştığımda git ikisini de ister username & password.

Şifremi her seferinde tekrar girmekte sorun yaşamıyorum ama sorun kullanıcı adını girmektir. httpsDepomu klonlamak için kullanıyorum .

Peki, git'i usernameher biri için sorulmayacak şekilde nasıl yapılandırabilirim git push.

Linux'ta yeniyim ama pencerelerde IIRC git pushsadece şifre istiyor.



@Wug: Ama şifreyi saklamak istemiyorum. Sadece kullanıcı adını saklamak istiyorum.
RanRag

4
bu talimatları izlemeyi ve şifre satırını atlamayı deneyin.
Wug


ayrıca ilk sorunuza süper kullanıcı hakkında bir cevap var - superuser.com/questions/847181/…
dk14

Yanıtlar:


975

Düzenle (moderatörler ve yorumlar tarafından önerilen şekilde @ dk14 tarafından)

UYARI: Yanıttan kullanırsanız credential.helper store, şifreniz adresinde tamamen şifrelenmemiş olarak saklanır ("olduğu gibi")~/.git-credentials . Özellikle işvereninizin güvenlik sorunlarına sıfır toleransı varsa, lütfen aşağıdaki yorumlar bölümüne veya "Bağlantılı" bölümündeki yanıtlara bakın.

Kabul edilmesine rağmen, gerçek OP'nin yalnızca kullanıcı adını (şifre değil) ihmal etme sorusuna cevap vermez. Bu tam sorunu yaşayan okuyucular için @ grawity'nin cevabı işe yarayabilir.


Orijinal cevap (@Alexander Zhu tarafından):

Aşağıdaki komutu kullanarak kimlik bilgilerinizi saklayabilirsiniz

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

Ayrıca okumanızı tavsiye ederim
$ git help credentials


160
Uyarı, bu yöntemde güvenlik yoktur. Parolanız düz metin olarak saklanır.
Mark Lakata

13
Burada güvenliği sağlamak için daha iyi yollar bulabilirsiniz - stackoverflow.com/a/28104587/1809978
dk14

4
@MarkLakata - Lütfen bu cevaptaki komutu nasıl geri alabileceğimi söyle? Geri aldıktan sonra, kimlik bilgilerini saklamak için güvenli bir yöntem kullanacağım.
MasterJoe2

25
@ testerjoe2 denemekgit config --unset credential.helper
dk14

1
Zaman aşımını ayarlamayı unutmayın, varsayılan değer 15 dakikadır - Değeri yaklaşık 1 yıl olacak şekilde 30 milyona ayarlayın. Burada bulundu: stackoverflow.com/a/35942890/1579667
Benj

180

Bunu, .git/config yerel deponuzun dosyasında . Bu dosya 'url' adında bir giriş içeren 'uzak' adlı bir bölüm içeriyor. 'Url' girişi, bahsettiğiniz havuzun https bağlantısını içermelidir.

'Url' ana bilgisayarının önüne kullanıcı adınızı eklediğinizde, gitartık kullanıcı adınızı sormamalısınız. İşte bir örnek:

url = https://username@repository-url.com

5
Kullanıcı adınız veya pw'nizde özel karakterler kullanırsanız, onlardan kaçmalısınız. Doğru kaçış karakterleri için en.wikipedia.org/wiki/Percent-escape adresine bakın . örneğin "! @ #" [alıntılar olmadan] "% 21% 40% 23" ile değiştirilir. Aşağıdaki "Daniel Lerch" cevabına da bakınız
14'te

1
Aynı depoda çalışan diğer kullanıcılar kullanıcı adımı görecek mi?
CodyBugstein

17
Bu OP'nin sorusuna doğru bir cevap olmalıdır, yani "kullanıcı adı nasıl korunur, şifre DEĞİL". Bu cevap sadece kullanıcı adını ısıtmanın doğru yolu değil, aynı zamanda olası güvenlik riskini de önler git config credential.helper store.
RayLuo

Bu cevap için minnettarım ve bu şekilde denedim, ama yine de her seferinde bana soruyor (v 2.1.4) - remoteurl'u name@gitlab.com ve name%40mailaddress.com@gitlab.com ile denedi - her zaman soruyorusername for https://gitlab.com:
eli

1
Bunu denedim ve aldımunable to access 'https://<me>@bitbucket.org:<x>/<y>.git/': Illegal port number
Ian Grainger

118

Git depolarıyla kalıcı kimlik doğrulama

Kimlik bilgileri önbelleğini etkinleştirmek için aşağıdaki komutu çalıştırın:

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

Kullanım ayrıca önbellek sona erme tarihini de belirtmelidir

git config --global credential.helper "cache --timeout 7200"

Kimlik bilgileri önbelleğini etkinleştirdikten sonra 7200 saniye (2 saat) önbelleğe alınır .


Okuma kimlik Dokümanlar

$ git help credentials

Zaman aşımı süresini 7200'e ayarladım. Ama sonra test için 5'e ayarlamayı düşündüm. Bu yüzden 5'e ayarladım, ancak sonra 30 saniye sonra tekrar itmeye çalıştığımda, ancak kullanıcı adı veya şifre istenmedi.
Buttle Butkus

Global olarak depolanamayan kimlik bilgileriniz olabilir.
Jay Patel

Güvenlikle ilgili olarak, dokümanlara değinmeye değer: "Bu komut, gelecekteki Git programlarının kullanımı için kimlik bilgilerini bellekte önbelleğe alır. Depolanan kimlik bilgileri hiçbir zaman diske dokunmaz ve yapılandırılabilir bir zaman aşımından sonra unutulur." git-scm.com/docs/git-credential-cache
mloskot

2
git config credntial.helper store~ / .git-credentials dosyasında düz metin kimlik bilgilerini depolamaktan sorumlu olan bu tehlikeli komut değil mi? Bence (ve tecrübelerime göre) ... cache ...- komutu yeterlidir: git config --clogal credential.helper 'cache --timeout 7200'dir: ~/.git-credential-cachecache-file dosyası ile oluşturulur. Yani, bu komutu yerine getirin ve "... store" -komutunu DEĞİL
eli

Benim için çalışmadı. Hala her seferinde şifre istiyor
Ian Grainger

75

GitHub'daki bu makalede açıklandığı gibi yeni SSH anahtarları ekleyin .

Git hala kullanıcı adı ve şifre isterse, değiştirmeyi deneyin https://github.com/için git@github.com:uzaktan URL'de:

$ git config remote.origin.url 
https://github.com/dir/repo.git

$ git config remote.origin.url "git@github.com:dir/repo.git"

19
Bu doğru cevap olmalı! Kimlik bilgilerinizi kaydetmek inanılmaz derecede güvenli değildir. Bir SSH anahtarım varsa, yalnızca burada özetlenen doğru URL'ye sahip olmadığım için kimlik bilgilerimi soruyor.
Alexis Wilke

2
veya kullanabilirsinizgit config remote.origin.url "ssh://git@yourRepoHost/yourRepoName.git"
ndarkness

1
git config remote.origin.url git@gitlab.com: adammajewski / ray-backward-iteration.git
Adam

1
Teşekkürler, aradığım cevap bu.
Yupeng Tang

50

Bulduğum en kolay yol bu komutla oldu:

git config --global credential.https://github.com.username <your_username>

Bu, siteye göre site bazında çalışır ve genel git yapılandırmanızı değiştirir.

Değişiklikleri görmek için şunu kullanın:

git config --global --edit

1
Nedense benim için çalışan tek yöntem buydu. Teşekkürler!
Mathetes

Bu yöntem güvenli mi? şifresi yalnızca yerel bilgisayarda depolanıyor ve github'a aktarılmıyor mu?
Akın Hwan

Bunun neden onaylanmış cevap olmadığını bilmiyorum, komut mükemmel çalışıyor ve tam ve sadece şu soruya cevap veriyor: şifre değil kullanıcı adı saklamak. Teşekkürler Ben!
AmaelH

Ayrıca şunları da çalıştırabilirsiniz: [git config --global credential.helper 'cache --timeout = 3600'] Böylece şifreniz her seferinde bir saat boyunca kaydedilecektir
obenda

31

Ssh yerine https kullanıyorsanız, "url" .git/configyi user701648'in söylediği gibi düzenleyebilirsiniz, ancak isterseniz parolayı da ekleyebilirsiniz:

url = https://username:password@repository-url.com

1
Şifreme @dahil edilmişse ne olur ? url = https://username:abc@123@repository-url.comBana hata veriyorCould not resolve host: @123@git.com
Rahul Mankar

usernameBölüm göz ardı gibi görünüyor, ne zaman (örneğin FAN gelen FOO.git olarak) sunucusu yönlendirmeler.
Mikhail T.

22

Git yapılandırma dosyanıza aşağıdakine benzer bir şey koyarak belirli bir sitedeki tüm havuzlar için kullanıcı adınızı ayarlayabilirsiniz. " Https://example.com " ve "ben" ifadelerini gerçek URL ve gerçek kullanıcı adınızla değiştirmek istersiniz .

[credential "https://example.com"]
    username = me

(Bu doğrudan "git yardım kimlik bilgilerinden" alınmıştır)


16

Klonlanmış repo çalışmalarının değiştirilmesi:

git remote set-url origin git@github.com:gitusername/projectname.git

Önbelleğe alınmış kimlik bilgilerini kullanmak işe yarar ve zaman aşımı süresini ayarlamak işleri daha az can sıkıcı hale getirir. Windows kimlik bilgileri yardımcısını kullanıyorsanız, bu en kolay yöntem olmalıdır (özellikle SSH engellendiyse).


Bu, GitHub için doğru bir cevaptır (soru özellikle soruyor ... (neden indirildiğinizden emin değilim)
Tim Groeneveld

12

Http yerine SSH kullandığınızdan emin olun. Bu SO cevabını kontrol edin .


3
Ama kullanmak zorundaydım httpçünkü üniversitemde sshsys-admin bölümü tarafından engellendi.
RanRag

O zaman belki de bu bağlantı size yardımcı olacaktır.
gkris

Şu anda resmi bir GitHub yardım sayfası var. Benim için olan şey, giriş yapmadan önce kendi depolarımdan birini klonlamamdı, bu yüzden beni tanımadı ve varsayılan HTTPS'ye ayarlıydı. help.github.com/articles/changing-a-remote-s-url
anon58192932

11

git config --global credential.helper önbellek


1
Bu Linux üzerinde daha iyi bir cevap.
Larry

9

User701648'in cevabına ek olarak, kimlik bilgilerinizi aşağıdaki komutu kullanarak proje klasörü yerine ana klasörünüzde (tüm projeler için global) saklayabilirsiniz.

$ git config --global credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

9

Yalnızca git pull , git pull origin xxx , git hem kullanıcı adı hem de şifre ister.

git config credential.helper store

işe yarıyor.


9

En kolay yol, ~/.netrcaşağıdaki içeriklere sahip bir dosya oluşturmaktır :

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

(burada gösterildiği gibi: https://gist.github.com/ahoward/2885020 )

Kimsenin şifrenizi yazamaması için bu dosyadaki izinleri bile kapatabilirsiniz:

chmod 600 ~/.netrc

6

SSH sürümünü kullanırsanız , şifrelerle ilgili herhangi bir sorun yaşamayacaksınız.Sadece bir kez SSH anahtarı oluşturduğunuzda , git, bu pc bu github hesabıyla çalışacak ve bir daha asla (bu pc için) herhangi bir erişim hakkında bana sormayacak.

Github için SSH Nasıl Oluşturulur


4

Kullanıcı adı girmekten kaçınmak, ancak yine de bir şifre girmeniz istenirse, kullanıcı adı da dahil olmak üzere deponuzu klonlayabilirsiniz:

git clone user_name@example.gitrepo.com/my_repo.git


3

ssh+ key authenticationÇok daha güvenilir bir şekilde https+credential.helper

Tüm depolar için HTTPS yerine SSH kullanmak üzere aşağıdaki gibi yapılandırabilirsiniz:

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

url.<base>.insteadOfburada belgelenmiştir .


2

Hızlı yöntem

çalışma dir içinde iken git url olsun:

git config remote.origin.url

sonra :

git config credential.helper store

git push "url of your git"

son bir kez kullanıcı adı ve şifre soracak

yapılır.


1

Sadece koşabilirsin

git config --global credential.helper wincred

yükledikten ve sisteminizdeki pencereler için GIT'e giriş yaptıktan sonra.


Sorguda linux kelimesini görmedim. Benim kötü
cyperpunk

1

(Yalnızca Mac OS için)

için , Windows ve Linux aşağıda belirtilen Github belgelerine linke bakınız.

Github Dokümanlarından: Doküman Bağlantısı

GitHub parolanızı Git'te önbelleğe alma

  • Osxkeychain kimlik bilgileri yardımcısını kullanmak için Git 1.7.10 veya daha yenisine ihtiyacınız var.

    Git sürümünüzü kontrol etmek için: git --version

  • osxkeychain yardımcısının zaten yüklü olduğunu öğrenmek için :

    git credential-osxkeychain

    aşağıdaki yanıtı alırsanız, daha önce yüklü ve mac'unuzda kullanmaya hazırsınız demektir:

    > Usage: git credential-osxkeychain <get|store|erase>

    yukarıda gösterildiği gibi bir yanıt almazsanız, aşağıdaki komutu çalıştırarak yükleyebilirsiniz:

    git credential-osxkeychain

  • git'e global olarak git kimlik bilgileri için osxkeychain kullanmasını söylemek için:

    git config --global credential.helper osxkeychain

    Kimlik bilgilerini anahtarlığa kaydetmeden önce bir kez sorulur .

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.