fatal: tidak bisa membaca Nama pengguna untuk 'https://github.com': Tidak ada file atau direktori seperti itu

100

Saya mengalami masalah berikut saat mencoba menarik kode menggunakan git Bash di Windows:

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

Saya sudah mencoba menerapkan solusi yang diterima yang disediakan di sini:

... tapi masalahnya tetap ada. Setelah menambahkan / menghapus asal saya masih mendapatkan kesalahan yang sama.

noobie-php
sumber
Apakah Anda mengonfigurasi Nama Pengguna? git config --global user.name "Your Name Here"
Raul Andres
saya sudah mencobanya tetapi tidak mengacu pada nama pengguna git saya, saya pikir itu memberikan masalah untuk nama pengguna dari repositori git yang saya panggil di sini.
noobie-php

Jawaban:

70

Ikuti langkah-langkah untuk menyiapkan kunci SSH di sini: https://help.github.com/articles/generating-ssh-keys

ATAU

git remote add origin https://{username}:{password}@github.com/{username}/project.git
Tony Zampogna
sumber
3
Opsi kedua tidak berfungsi karena saya sudah menambahkan 'github asal'. Saya menghapus origin [git remote remove origin] dan kemudian menulis apa yang ada di jawaban dengan nama pengguna dan kata sandi saya dan itu berfungsi dengan baik.
P_Rein
10
alih-alih menghapus dan menambahkan kembali asal Anda juga dapat mengubah URL menggunakangit remote set-url origin https://{username}:{password}@github.com/...
Chris
10
Solusi @Chris berfungsi tetapi menyimpan kata sandi akun github pengguna dan membiarkannya dibaca hanya dengan mengetikgit remote -v
Jefferson Silva
Pilihan Chris berhasil untuk saya! Saya menindaklanjutinya dengan Jefferson Silva dan berhasil dengan baik. Masih ada error: cannot spawn sh: No such file or directorypesan ...
TheSciGuy
14

Saya menghadapi masalah yang sama persis. Masalah ini terjadi ketika saya mengkloning menggunakan URL HTTPS dan kemudian mencoba mendorong perubahan menggunakan Git Bash di Windows menggunakan:

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

Namun, ketika saya menggunakan URL SSH untuk mengkloning, masalah ini tidak terjadi:

git clone [email protected]:{username}/{repo}.git
Fayaz
sumber
3
Oke, tapi kenapa ini terjadi?
Gili
Karena bug di msysgit: github.com/msysgit/msysgit/issues/153
Fayaz
Saya mendapatkan pesan ini dalam wadah Docker yang berjalan di gitlab. Gambar dasarnya adalah python:3.7-slim. Jadi ini tidak terkait dengan Windows.
Martin Thoma
Dalam kasus saya, itu adalah repo organisasi yang menggunakan ssh: //git.gartner.com
Ankush
11

Bagi saya tidak ada yang berhasil dari yang disarankan di atas, saya menggunakan git pulldari skrip shell jenkins dan ternyata itu mengambil nama pengguna yang salah. Saya menghabiskan waktu lama sebelum saya menemukan cara untuk memperbaikinya tanpa beralih ke SSH.

Di folder pengguna, buat file .gitconfig (jika Anda belum memilikinya) dan letakkan kredensial Anda dalam format berikut:, infohttps://user:[email protected] selengkapnya . Setelah file .gitconfig Anda menautkan ke kredensial tersebut, dalam kasus saya itu adalah:

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

Sekarang git akan selalu menggunakan kredensial tersebut apa pun yang terjadi. Saya berharap ini akan membantu seseorang, seperti itu membantu saya.

Katia
sumber
bagi saya itu hanya bekerja ketika saya dimasukkan [credential] helper = store --file /..../.git-credentialske .git/configdalam direktori kerja saya
Kirill Oficerov
11

Perhatikan bahwa jika Anda mendapatkan kesalahan ini:

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

Kemudian Anda perlu memperbarui Git Anda ke versi 2.16atau yang lebih baru.

Rosdi Kasim
sumber
7

Saya menemukan jawaban saya di sini :

edit ~/.gitconfigdan tambahkan berikut ini:

[url "[email protected]:"]
 insteadOf = https://github.com/

Meskipun ini menyelesaikan masalah yang berbeda, kode kesalahannya sama ...

Louis Parkin
sumber
6

Jika Anda ingin terus menggunakan https, bukan ssh, dan hindari mengetikkan nama pengguna dan sandi Anda untuk alasan keamanan.

Anda juga dapat mencoba token Github OAuth , lalu Anda dapat melakukan git config remote.origin.url 'https://{token}@github.com/{username}/{project}.git' atau git remote add origin 'https://{token}@github.com/{username}/{project}.git'

Ini berhasil untuk saya!

spiralmoon
sumber
4

Kesalahan ini juga dapat terjadi saat mencoba menggandakan URL HTTP yang tidak valid. Misalnya, ini adalah kesalahan yang saya dapatkan saat mencoba mengkloning URL GitHub yang beberapa karakternya tidak aktif:

$ 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/'

Ini sebenarnya terjadi di dalam Emacs, jadi kesalahan di Emacs terlihat seperti ini:

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

Jadi, alih-alih kesalahan membantu yang mengatakan bahwa tidak ada repo seperti itu di URL itu, itu memberi saya itu, mengirim saya dengan angsa liar sampai akhirnya saya menyadari bahwa URL itu salah.

Ini dengan git versi 2.7.4.

Saya memposting ini di sini karena itu terjadi pada saya sebulan yang lalu dan lagi sekarang, mengirim saya pada pengejaran angsa liar yang sama lagi. > :(


sumber
3

Jawaban singkat:

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

Abaikan tiga baris pertama jika ini bukan repositori baru.

Deskripsi lebih panjang:

Baru saja mengalami masalah yang sama, karena bukan dari jawaban di atas yang membantu saya, saya telah memutuskan untuk memposting solusi yang berhasil untuk saya ini.

Beberapa Catatan:

  • Kunci SSH telah dibuat
  • Kunci SSH ditambahkan ke github, masih mengalami kesalahan ini.
  • Saya telah membuat repositori baru di GitHub untuk proyek ini dan mengikuti langkah-langkah yang dijelaskan

Sebagai alat baris perintah, saya menggunakan GitShell (untuk Windows, saya menggunakan Terminal.app di Mac).
GitShell adalah alat GitHub resmi, dapat diunduh dari https://windows.github.com/

Semoga ini bisa membantu siapa saja yang memiliki masalah yang sama.

Sihir Kreatif
sumber
1

Ini adalah masalah dengan kredensial yang Anda simpan di cache kredensial sistem. Anda mungkin telah menyetel variabel konfigurasi 'credential.helper' ke wincred atau winstore dan gagal untuk menghapusnya. Jika Anda memulai Panel Kontrol dan meluncurkan applet Pengelola Kredensial, cari item di bagian kredensial umum berlabel "git: https://github.com ". Jika Anda menghapus ini, maka akan dibuat ulang lain kali tetapi utilitas pembantu kredensial akan meminta kredensial baru Anda.

patthoyts.dll
sumber
alat apa yang Anda maksud Saya saat ini menggunakan Bash untuk windows
noobie-php
ya - jadi lihatlah di applet Panel Kontrol Manajer Kredensial. Jika tidak ada apa-apa di sana seperti yang disebutkan, periksa konfigurasi Anda - git config --global -l | grep credential. Jika ada output apa pun, itu akan menjadi utilitas yang mencoba memberi makan kredensial Anda yang tersimpan ke server saat Anda mendorong.
patthoyts
1
Mate saya pikir isnt ini masalah mari saya jelaskan, mungkin Anda mendapatkan apa yang saya mencoba untuk mengatakan, git remote add origin https://github.com/username/Hello-World.gityang usernameyang diikat ke link di repo git ini membuat masalah, saya tidak berpikir username saya SENDIRI membuat masalah di sini. Sejauh yang saya tahu Palungan kredensial membantu mengelola kredensial pribadi, bukan kredensial repositori.
noobie-php
1

Ganti url jarak jauh Anda seperti ini:

git remote set-url origin https://<username>@github.com/<username>/<repo>.git
GrossesKinoZuerich
sumber
1
Semua posting lain menunjukkan meletakkan kata sandi di url jarak jauh, yang kemudian akan disimpan teks biasa pada disk - keamanan tidak, tidak. Hanya diperlukan nama pengguna, penyimpanan kredensial akan meminta nama pengguna / kata sandi github Anda dan kemudian menyimpannya dengan aman untuk digunakan secara otomatis.
Bae
1

TL; DR: periksa apakah Anda dapat membaca / menulis ke /dev/tty. Jika tidak dan Anda pernah sumembuka shell, periksa apakah Anda telah menggunakannya dengan benar.

Saya menghadapi masalah yang sama tetapi di Linux dan saya telah menemukan masalahnya. Saya tidak menyimpan kredensial saya, jadi saya selalu memasukkannya saat diminta:

Username for 'https://github.com': foo
Password for 'https://[email protected]': 

Cara git menangani koneksi http (s) digunakan, /usr/lib/git-core/git-remote-https Anda dapat melihat strace di sini:

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 +++

Jadi saya mencoba meneleponnya secara langsung:

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

dan hasilnya:

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 +++

Dan inilah dia:

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-httpsmencoba membaca kredensial melalui /dev/ttyjadi saya menguji apakah itu berfungsi:

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

Tetapi di terminal lain:

# echo ahoj > /dev/tty
ahoj

Saya tahu saya beralih ke pengguna ini menggunakan sujadi saya keluar dari shell untuk melihat bagaimana dan menemukan saya menggunakan perintah su danman -jadi saya mengujinya lagi:

~# 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

Saya mungkin mengabaikan pesan tersebut dan terus bekerja tetapi inilah alasannya. Ketika saya beralih menggunakan yang benar su - danmansemuanya bekerja dengan baik:

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

Setelah ini, git mulai bekerja dengan benar

danman
sumber
1

Bagi mereka yang mendapatkan kesalahan ini dalam pipeline Jenkins, itu bisa diperbaiki dengan menggunakan plugin Agen SSH . Kemudian bungkus perintah git Anda dengan sesuatu seperti ini:

sshagent(['my-ssh-key']) {
    git remote set-url origin [email protected]:username/reponame.git
    sh 'git push origin branch_name'
}
Nagev
sumber
0

mencoba solusi CreativeMagic, masalah kredensial dikonfirmasi:

prompt >>> Nama pengguna untuk ' https://github.com '

Jadi, saya mengubah url asal saya dengan

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

dan

git push --set-upstream origin master
tuxun
sumber
0

Coba gunakan shell Windows normal seperti CMD.

Vajiheh habibi
sumber
0

Sebelumnya ketika saya tidak diberi izin untuk mengakses repo, saya juga menambahkan kunci pub SSH ke gitlab. Pada titik saya dapat mengakses repo dan menjalankan vendor mod go, masalah yang sama seperti Anda terjadi. (mungkin karena cache)

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

Setelah beberapa saat mencoba, saya memutuskan untuk menghapus kunci SSH dan terminal meminta mengisi nama pengguna dan kata sandi. Semuanya baik-baik saja!

Long Tran
sumber
0

Apa yang berhasil bagi saya adalah mengubah akses repositori Git dari pribadi menjadi publik.

Kapil Garg
sumber