ölümcül: 'https://github.com' için Kullanıcı Adı okunamadı: Böyle bir dosya veya dizin yok


100

Windows'ta git Bash kullanarak kod almaya çalıştığımda şu sorunu yaşıyorum:

fatal: could not read Username for 'https://github.com': No such file or directory

Burada sağlanan kabul edilen çözümü zaten uygulamaya çalıştım:

... ama sorun devam ediyor. Köken ekledikten / çıkardıktan sonra hala aynı hatayı alıyorum.


Kullanıcı adını yapılandırdınız mı? git config --global user.name "Your Name Here"
Raul Andres

zaten denedim ama git kullanıcı adıma atıfta bulunmuyor, burada aradığım git deposunun kullanıcı adı için sorun yarattığını düşünüyorum.
noobie-php

Yanıtlar:


70

SSH anahtarlarını ayarlamak için şu adımları izleyin: https://help.github.com/articles/generating-ssh-keys

VEYA

git remote add origin https://{username}:{password}@github.com/{username}/project.git

3
2. seçenek işe yaramadı çünkü zaten 'kaynak github' ekledim. [Git remote remove origin] kaynağını kaldırdım ve ardından cevapta ne olduğunu kullanıcı adımı ve şifremle yazdım ve iyi çalıştı.
P_Rein

10
kaynağını silmek ve yeniden eklemek yerine URL'yi kullanarak da değiştirebilirsinizgit remote set-url origin https://{username}:{password}@github.com/...
Chris

10
@Chris çözümü çalışır ancak kullanıcının github hesap şifresini saklar ve sadece yazarak okunmasına izin verirgit remote -v
Jefferson Silva

Chris'in seçeneği benim için çalıştı! Jefferson Silva's ile takip ettim ve işe yaradı. Hala bir error: cannot spawn sh: No such file or directorymesajınız var ...
TheSciGuy

14

Ben de aynı problemle karşılaştım. Bu sorun, HTTPS URL kullanarak klonladığımda ve ardından değişiklikleri Windows'ta Git Bash kullanarak şunu kullanarak göndermeye çalıştığımda ortaya çıktı:

git clone https://github.com/{username}/{repo}.git

Ancak, klonlamak için SSH URL'sini kullandığımda bu sorun oluşmadı:

git clone git@github.com:{username}/{repo}.git

3
Tamam, ama bu neden oluyor ?
Gili

Msysgit'teki bir hata nedeniyle: github.com/msysgit/msysgit/issues/153
Fayaz

Bu mesajı gitlab üzerinde çalışan bir Docker konteynerinde alıyorum. Temel görüntü python:3.7-slim. Yani Windows ile ilgili değil.
Martin Thoma

Benim durumumda, ssh: //git.gartner.com
Ankush

11

Benim için yukarıda önerilenden hiçbir şey işe yaramadı, git pulljenkins kabuk komut dosyasını kullanıyorum ve görünüşe göre yanlış kullanıcı adı alıyor. SSH'ye geçmeden düzeltmenin bir yolunu bulmadan önce yıllar geçirdim.

Kullanıcı klasörünüzde .gitconfig dosyası oluşturun (zaten sahip değilseniz) ve kimlik bilgilerinizi şu biçimde girin:, https://user:pass@example.comdaha fazla bilgi . .Gitconfig dosyanız bu kimlik bilgilerine bağlandıktan sonra, benim durumumda:

[credential] helper = store --file /Users/admin/.git-credentials

Şimdi git, ne olursa olsun her zaman bu kimlik bilgilerini kullanacak. Umarım bana yardım ettiği gibi birine yardımcı olur.


i koyduğunuzda benim için yalnızca çalıştı [credential] helper = store --file /..../.git-credentialsiçinde .git/configde benim çalışma dizinine
Kirill Oficerov

11

Bunun yerine bu hatayı alıyorsanız şunu unutmayın:

fatal: could not read Username for 'https://github.com': No error

Daha sonra Git'inizi versiyon 2.16veya sonraki bir sürüme güncellemeniz gerekir .


7

Cevabımı burada buldum :

düzenleyin ~/.gitconfigve aşağıdakileri ekleyin:

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

Farklı bir sorunu çözse de hata kodu aynı ...


6

Ssh yerine https kullanmaya devam etmek istiyorsanız ve güvenlik nedeniyle kullanıcı adınızı ve şifrenizi yazmaktan kaçının.

Ayrıca deneyebilirsiniz Github OAuth jetonu sonra yapabileceğiniz, git config remote.origin.url 'https://{token}@github.com/{username}/{project}.git' ya git remote add origin 'https://{token}@github.com/{username}/{project}.git'

Bu benim için çalışıyor!


4

Bu hata, geçersiz bir HTTP URL'sini klonlamaya çalışırken de ortaya çıkabilir. Örneğin, birkaç karakter kapalı olan bir GitHub URL'sini klonlamaya çalışırken aldığım hatadır:

$ git clone -v http://github.com/username/repo-name.git
Cloning into 'repo-name'...
Username for 'https://github.com': 
Password for 'https://github.com': 
remote: Repository not found.
fatal: Authentication failed for 'https://github.com/username/repo-name.git/'

Aslında Emacs'in içinde oldu, bu yüzden Emacs'taki hata şuna benziyordu:

fatal: could not read Username for ’https://github.com’: No such device or address

Bu yüzden, bu URL'de böyle bir repo olmadığını söyleyen yararlı bir hata yerine, URL'nin yanlış olduğunu nihayet anlayıncaya kadar beni bir vahşi kaz avına gönderdi.

Bu, git sürüm 2.7.4 ile.

Bunu buraya gönderiyorum çünkü bir ay önce başıma geldi ve yine şimdi, beni aynı vahşi kaz avına gönderiyor. > :(


3

Kısa cevap:

git init
git add README.md
git commit -m "first commit"


git remote add origin https://github.com/{USER_NAME}/{REPOSITORY_NAME}.git
git push --set-upstream origin master

Yeni bir depo değilse ilk üç satırı göz ardı edin.

Daha uzun açıklama:

Aynı sorunu yaşadım, yukarıdaki cevapların hiçbiri bana yardımcı olmadığından, benim için çalışan bu çözümü göndermeye karar verdim.

Birkaç Not:

  • SSH anahtarı oluşturuldu
  • SSH anahtarı github'a eklendi, hala bu hatayı alıyordu.
  • Bu proje için GitHub'da yeni bir depo oluşturdum ve açıklanan adımları izledim

Komut satırı aracı olarak GitShell'i kullandım (Windows için Mac'te Terminal.app kullanıyorum).
GitShell resmi GitHub aracıdır, https://windows.github.com/ adresinden indirilebilir.

Umarım bu aynı sorunu yaşayan herkese yardımcı olur.



1

Bu, sistem kimlik bilgileri önbelleğinde depolanan kimlik bilgilerinizle ilgili bir sorundur. Muhtemelen 'credential.helper' yapılandırma değişkenini wincred veya winstore olarak ayarladınız ve bu değişkeni temizlemiyor. Denetim Masası'nı başlatır ve Kimlik Bilgisi Yöneticisi uygulamasını başlatırsanız, "git: https://github.com " etiketli genel kimlik bilgileri bölümünde öğeleri arayın . Bunları silerseniz, bir dahaki sefere yeniden oluşturulur, ancak kimlik bilgisi yardımcısı yardımcı programı sizden yeni kimlik bilgilerinizi ister.


şu anda Windows için Bash kullanıyorum
noobie-php

evet - Kimlik Bilgisi Yöneticisi Kontrol Paneli uygulamasına bir göz atın. Orada belirtildiği gibi hiçbir şey yoksa, yapılandırmanızı kontrol edin - git config --global -l | grep credential. Herhangi bir çıktı varsa, ittiğinizde saklanan kimlik bilgilerinizi sunucuya beslemeye çalışan yardımcı program olacaktır.
patthoyts

1
Dostum, sanırım sorun bu değil, açıklayayım, belki söylemeye çalıştığımı anlarsın, bu git repo bağlantısına bağlı olan sorun çıkarıyor, KENDİ kullanıcı adımın burada sorun git remote add origin https://github.com/username/Hello-World.gityarattığını usernamesanmıyorum. Bildiğim kadarıyla Credential manger, deponun kimlik bilgilerini değil kişisel kimlik bilgilerini yönetmeye yardımcı oluyor.
noobie-php

1

Uzak URL'nizi şu şekilde değiştirin:

git remote set-url origin https://<username>@github.com/<username>/<repo>.git

1
Diğer tüm gönderiler, parolanın uzak url'ye koyulduğunu gösterir ve bu daha sonra düz metin olarak diskte depolanır - bir güvenlik no. Yalnızca kullanıcı adı gereklidir, kimlik bilgileri deposu github kullanıcı adınızı / şifrenizi isteyecek ve ardından otomatik olarak kullanılmak üzere güvenli bir şekilde saklayacaktır.
Bae

1

TL; DR: okuyup yazamadığınızı kontrol edin /dev/tty. Hiçbir ve kullandıysanız su, kabuğu açabilir doğru kullanmış olmadığını kontrol etmek.

Aynı sorunla karşı karşıyaydım ama Linux'ta ve sorunu buldum. Kimlik bilgilerim saklanmadı, bu yüzden onları her zaman istemde giriyorum:

Username for 'https://github.com': foo
Password for 'https://foo@github.com': 

Git'in http (s) bağlantılarını nasıl kullandığı konusunda /usr/lib/git-core/git-remote-https strace'i burada görebilirsiniz:

stat("/usr/lib/git-core/git-remote-https", {st_mode=S_IFREG|0755, st_size=1366784, ...}) = 0
pipe([9, 10])                           = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f65398bb350) = 18177
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
close(10)                               = 0
read(9, "", 8)                          = 0
close(9)                                = 0
close(5)                                = 0
close(8)                                = 0
dup(7)                                  = 5
fcntl(5, F_GETFL)                       = 0 (flags O_RDONLY)
write(6, "capabilities\n", 13)          = 13
fstat(5, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
read(5, "fetch\noption\npush\ncheck-connecti"..., 4096) = 38
write(6, "option progress true\n", 21)  = 21
read(5, "ok\n", 4096)                   = 3
write(6, "option verbosity 1\n", 19)    = 19
read(5, "ok\n", 4096)                   = 3
stat(".git/packed-refs", {st_mode=S_IFREG|0664, st_size=675, ...}) = 0
lstat(".git/objects/10/52401742a2e9a3e8bf068b115c3818180bf19e", {st_mode=S_IFREG|0444, st_size=179, ...}) = 0
lstat(".git/objects/4e/35fa16cf8f2676600f56e9ba78cf730adc706e", {st_mode=S_IFREG|0444, st_size=178, ...}) = 0
dup(7)                                  = 8
fcntl(8, F_GETFL)                       = 0 (flags O_RDONLY)
close(8)                                = 0
write(6, "list for-push\n", 14)         = 14
read(5, fatal: could not read Username for 'https://github.com': No such device or address
"", 4096)                       = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=18177, si_uid=1000, si_status=128, si_utime=6, si_stime=2} ---
exit_group(128)                         = ?
+++ exited with 128 +++

Ben de onu doğrudan aramaya çalıştım:

echo "list for-push" | strace /usr/lib/git-core/git-remote-https my

ve sonuç:

poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 1 ([{fd=3, revents=POLLIN|POLLRDNORM}])
recvfrom(3, "\27\3\3\1\32", 5, 0, NULL, NULL) = 5
recvfrom(3, "\307|4Q\21\306\334\244o\237-\230\255\336\25\215D\257\227\274\r\330\314U\5\17\217T\274\262M\223"..., 282, 0, NULL, NULL) = 282
openat(AT_FDCWD, "/dev/tty", O_RDONLY)  = -1 ENXIO (No such device or address)
openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=2995, ...}) = 0
read(4, "# Locale name alias data base.\n#"..., 4096) = 2995
read(4, "", 4096)                       = 0
close(4)                                = 0
openat(AT_FDCWD, "/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "fatal: could not read Username f"..., 83fatal: could not read Username for 'https://github.com': No such device or address
) = 83
exit_group(128)                         = ?
+++ exited with 128 +++

Ve işte bana geldi:

openat(AT_FDCWD, "/dev/tty", O_RDONLY)  = -1 ENXIO (No such device or address)
...
write(2, "fatal: could not read Username f"..., 83fatal: could not read Username for 'https://github.com': No such device or address
) = 83

git-remote-httpskimlik bilgilerini okumaya çalışır, /dev/ttybu yüzden çalışıp çalışmadığını test ettim:

$ echo ahoj > /dev/tty
bash: /dev/tty: No such device or address

Ama başka bir terminalde:

# echo ahoj > /dev/tty
ahoj

Kullanarak bu kullanıcıya geçiş yaptığımı biliyordum, bu suyüzden nasıl komut kullandığımı görmek için kabuktan çıktım ve su danman -tekrar test ettim:

~# su danman -
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
/root$ echo ahoj > /dev/tty
bash: /dev/tty: No such device or address

Muhtemelen mesajı görmezden geldim ve çalışmaya devam ettim ama nedeni buydu. Doğru kullanarak geçiş yaptığımda su - danmanher şey yolunda gitti:

~# su - danman
danman@speedy:~$ echo ahoj > /dev/tty
ahoj

Bundan sonra git düzgün çalışmaya başladı


1

Jenkins işlem hattında bu hatayı alanlar için, bir SSH Agent eklentisi kullanılarak düzeltilebilir . Sonra git komutlarınızı aşağıdaki gibi bir şeye sarın:

sshagent(['my-ssh-key']) {
    git remote set-url origin git@github.com:username/reponame.git
    sh 'git push origin branch_name'
}

0

CreativeMagic çözümünü denerken, kimlik bilgisi sorunu onaylandı:

istemi >>> ' https://github.com ' için kullanıcı adı

Bu yüzden kaynak url’mi ile değiştirdim

git remote set-url --add origin http://github.com/user/repo

ve

git push --set-upstream origin master


0

Daha önce depoya erişim izni verilmediğinde, SSH pubkey'i gitlab'a da eklemiştim. Depoya erişip go mod satıcısını çalıştırabildiğim noktada, sizinle aynı sorun yaşanıyor. (belki önbellek nedeniyle)

go mod vendor

go: errors parsing go.mod:
/Users/macos/Documents/sample/go.mod:22: git ls-remote -q https://git.aaa.team/core/some_repo.git in /Users/macos/go/pkg/mod/cache/vcs/a94d20a18fd56245f5d0f9f1601688930cad7046e55dd453b82e959b12d78369: exit status 128:
    fatal: could not read Username for 'https://git.aaa.team': terminal prompts disabled

Bir süre denedikten sonra, SSH anahtarını kaldırmaya karar veriyorum ve terminal kullanıcı adı ve şifreyi dolduruyor. Her şey yolunda o zaman!


-1

Benim için işe yarayan şey Git deposunun erişimini özelden herkese açık hale getirmekti.


İnsanlar depolarını gizli tutmak isteyebileceklerinden bu bir çözüm değil
Krzysztof Krzeszewski
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.