Git push için komutta kullanıcı adı ve şifre


110

Komutta kullanıcı adı ve parolayı belirterek bir git deposunu aşağı klonlamak mümkündür. Misal:

git clone https://username:password@myrepository.biz/file.git

Basarken kullanıcı adı ve şifre de belirtilebilir mi? Böylece, örneğin, çalıştırma git push origin --alldaha sonra bir parola soran çıktı verir. Bunu tek bir komutla istiyorum.

(Anahtarları ve diğer çözümleri ayarlama yeteneğinin farkındayım, ancak kullanıcı adı ve parolayı tek bir komutla kullanmaya devam etmenin bir yolu olup olmadığını öğrenmek istiyorum.) Git Bash'i Windows 8.1'de çalıştırıyorum.


İçin çözüm buluyor musunuz git commit?
Nam Vu

Yanıtlar:


158

Evet yapabilirsin

git push https://username:password@myrepository.biz/file.git --all

bu durumda girişi https://username:password@myrepository.biz/file.gitdeğiştirinorigingit push origin --all

İçin daha fazla seçenek görmek için git pushdeneyingit help push


13
Bunun kullanıcı adı ve parolayı git yapılandırmasında düz metin olarak saklayacağını unutmayın .
dürtmek

4
düz parola yerine parola karmasını kullanabilirsiniz
Vasiliy Vanchuk

1
@VasiliyVanchuk Ne tür bir hash kullanıyorsunuz? Bu Github için çalışıyor mu?
Raphi

14
şifre içeriyorsa ne olur @?
Rahul Sharma

2
Yolun tamamını ' ', örneğin aşağıdakilerle git push 'https://username:password@myrepository.biz/file.git'
kapatmanızı öneririz


3

Git belgelerine göre , git pushkomutun son argümanı, göndermek istediğiniz depo olabilir:

    git push [--all | --mirror | --tags] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
             [--repo=<repository>] [-f | --force] [--prune] [-v | --verbose] [-u | --set-upstream]
             [<repository> [<refspec>…]]

Ve repositoryparametre bir URL veya uzak bir ad olabilir.

Böylece, clonekomut örneğinizde yaptığınız gibi kullanıcı adı ve parolayı belirtebilirsiniz .


2
Bu uygun görünüyor, ancak git repo'yu argüman olarak kullanıcı adı ve parola ile eklediğimde, örnek olarak, yine de parola soruyor.
Jake

3

Bunun gibi URL'leri kullandığınızda Git parolayı saklamaz. Bunun yerine, yalnızca kullanıcı adını saklayacaktır, bu nedenle yalnızca bir dahaki sefere sizden şifreyi sorması gerekir. Kılavuzda açıklandığı gibi , parolayı saklamak için harici bir kimlik bilgisi yardımcısı kullanmalısınız . Windows için, Git için Windows Kimlik Bilgileri Deposu'nu kullanabilirsiniz . Bu yardımcı da varsayılan olarak Windows için GitHub'a dahil edilmiştir .

Kullanırken, şifreniz otomatik olarak hatırlanacaktır, bu yüzden sadece bir kez girmeniz yeterlidir. Bu nedenle, klonladığınızda, şifreniz istenecek ve ardından uzaktan kumandayla yapılan her iletişim sizden bir daha şifrenizi istemeyecektir. Bunun yerine, kimlik bilgisi yardımcısı Git'e kimlik doğrulamasını sağlayacaktır.

Bu elbette yalnızca https aracılığıyla kimlik doğrulaması için çalışır; ssh erişimi ( git@host.com/repository.git) için SSH anahtarlarını ve kullandığınızı hatırlayabileceğiniz anahtarları ssh-agent(veya plink kullanıyorsanız PuTTY'nin yarışmasını) kullanırsınız.


4
"Anahtarları ve diğer çözümleri ayarlama becerisinin farkındayım, ancak kullanıcı adı ve parolayı tek bir komutla kullanmaya devam etmenin bir yolu olup olmadığını bilmek istiyorum."
Marvin

@Marvin Bu açıklamanın farkındayım, ancak sadece iki cümlelik bir cevap göndermek istemedim, bu yüzden sadece HTTPS ile bağlanmakla ilgilenmeyen diğer kullanıcılar için bilgiler ekledim.
dürtmek

4
Yine de sorusuna cevap vermiyor.
Marvin

3

Bu mümkündür, ancak 2.9.3'ten (Ağustos 2016) önce, bir git pushklonlanmış depoya geri gönderilirken kullanılan tam url'yi yazdırır.
Bu, kullanıcı adınızı ve şifrenizi içerir!

Ama daha fazlası yok: Jeff King ( ) tarafından 68f3c07'yi (20 Temmuz 2016) ve 882d49c'yi (14 Temmuz 2016 ) gerçekleştirmeyi görün . ( Junio ​​C Hamano tarafından birleştirildi - - in commit 71076e1 , 08 Ağu 2016)peff
gitster

push: durum çıktısında URL'yi anonimleştir

Commit 47abd85 (getir: url’lerden kullanıcı adlarını saklamadan önce çıkar, 2009-04-17, Git 1.6.4) URL’leri anonimleştirmeyi öğretti.
Buradaki birincil amaç, birleştirme-tamamlama mesajlarında parola yapıştırmaktan kaçınmaktı, ancak bir yan etki olarak, bunları stderr'e yazdırmaktan da kaçınıyoruz.

İtme tarafında birleştirme-kesinleştirme sorunu yoktur, ancak muhtemelen bunları stderr'e yazdırmaktan kaçınmalıdır . Aynı anonimleştirme işlevini yeniden kullanabiliriz.

Bunun ortaya çıkması için, kimlik bilgilerinin ya komut satırında ya da git yapılandırma dosyasında görünmesi gerekeceğini unutmayın, bunların hiçbiri özellikle güvenli değildir.
Bu yüzden insanlar bunun yerine kimlik bilgisi yardımcılarını kullanmaya başlamalı , bu da bu sorunu ortadan kaldırıyor.

Ancak bu, herhangi bir nedenle URL'ye gömülü kimlik bilgilerini kullanan kişiler için durumu iyileştirmemek için bir mazeret değildir.


3

Özel karakterli şifrelerle ilgili sorunları olan herkes için şifreyi atlayın ve sizden bunu isteyecektir:

git push https://YOUR_GIT_USERNAME@github.com/YOUR_GIT_USERNAME/yourGitFileName.git

Görünüşe göre cevabınız, web'in tamamında sadece kullanıcı adını nasıl vereceğinizi açıklayan tek cevap.
shuhalo

@PreetSangha YOUR_GIT_USERNAMEkullanıcı adınızı değiştirdiniz mi ve github.com'u kullanmıyorsanız başka bir şeyle değiştirdiniz mi? Değiştirmek mi yourGitFileName.gitbaşka bir şey?
TheTechRobo36414519

@ TheTechRobo36414519 Yorumum için özür dilerim. Başka bir izin sorunundan kaynaklandı.
Preet Sangha

1
@PreetSangha Zarar vermedi: D
TheTechRobo36414519
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.