WindowsでGIT Bashを使用してコードをプルしようとすると、次の問題が発生します
ここで提供されている承認済みのソリューションを実装しようとしました。
しかし、問題は解決しません。 Originを追加/削除した後も同じエラーが発生します。
fatal: could not read Username for 'https://github.com': No such file or directory
ここでSSHキーを設定する手順に従ってください: https://help.github.com/articles/generated-ssh-keys
OR
git remote add Origin https://{username}:{password}@github.com/{username}/project.git
私はまったく同じ問題に直面しました。この問題は、HTTPS URLを使用してクローンを作成し、次にWindowsでGit Bashを使用して変更をプッシュしようとしたときに発生しました。
git clone https://github.com/{username}/{repo}.git
ただし、SSH URLを使用してクローンを作成した場合、この問題は発生しませんでした。
git clone [email protected]:{username}/{repo}.git
短い答え:
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
新しいリポジトリでない場合、最初の3行を無視します。
長い説明:
上記の回答のどれも役に立たなかったため、同じ問題が発生したため、この解決策を投稿することにしました。
いくつかのメモ:
コマンドラインツールとしてGitShellを使用しました(Windowsの場合、MacではTerminal.appを使用します)。
GitShellは公式のGitHubツールであり、 https://windows.github.com/ からダウンロードできます。
これが同じ問題を抱えている人に役立つことを願っています。
このエラーは、無効なHTTP URLを複製しようとしたときにも発生する可能性があります。たとえば、これは数文字離れたGitHub URLを複製しようとしたときに得たエラーです。
$ 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/'
ただし、実際にはEmacs内で発生したため、Emacsのエラーは次のようになりました。
fatal: could not read Username for ’https://github.com’: No such device or address
そのため、そのURLにそのようなレポがなかったという有益なエラーの代わりに、URLが間違っていることに気が付くまで野生のガチョウの追跡を送信しました。
これはgitバージョン2.7.4で発生します。
1か月前と今ちょうど同じことが起きたので、ここに投稿しました。 > :(
私にとっては、上記の提案から何もうまくいかず、jenkins Shellスクリプトのgit pull
を使用していますが、明らかに間違ったユーザー名が必要です。 SSHに切り替えることなく修正する方法を見つける前に、何年も費やしていました。
ユーザーのフォルダーに.gitconfigファイルを作成し(まだ持っていない場合)、次の形式で資格情報を入力します:https://user:[email protected]
、more info 。 .gitconfigファイルがこれらの資格情報にリンクした後、私の場合は次のようになりました。
[credential] helper = store --file /Users/admin/.git-credentials
Gitは、これらの資格情報を常に使用します。私が助けたように、それが誰かを助けることを願っています。
TL; DR:/dev/tty
の読み取り/書き込みができるかどうかを確認します。いいえで、su
を使用してシェルを開いた場合は、正しく使用したかどうかを確認します。
私は同じ問題に直面していましたが、Linuxで問題を発見しました。資格情報が保存されていないため、常にプロンプトで入力します:
Username for 'https://github.com': foo
Password for 'https://[email protected]':
Gitがhttp(s)接続を処理する方法は/usr/lib/git-core/git-remote-https
を使用しています。ここでstraceを見ることができます:
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 +++
だから私はそれを直接呼ぼうとした:
echo "list for-Push" | strace /usr/lib/git-core/git-remote-https my
そして結果:
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 +++
そして、ここに来ました:
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-https
は/dev/tty
を介して資格情報を読み取ろうとするため、動作するかどうかをテストしました。
$ echo ahoj > /dev/tty
bash: /dev/tty: No such device or address
しかし、別のターミナルで:
# echo ahoj > /dev/tty
ahoj
su
を使用してこのユーザーに切り替えたことを知っていたので、シェルを終了して方法を確認し、コマンドsu danman -
を使用したことがわかりました。
~# 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
私はおそらくこのメッセージを無視して仕事を続けましたが、これが理由でした。正しいsu - danman
を使用して切り替えたとき、すべて正常に機能しました。
~# su - danman
danman@speedy:~$ echo ahoj > /dev/tty
ahoj
この後、gitは正常に動作し始めました
これは、システムクレデンシャルキャッシュに保存されているクレデンシャルの問題です。おそらく、構成変数 'credential.helper'がwincredまたはwinstoreに設定されており、クリアに失敗しています。コントロールパネルを起動し、Credential Managerアプレットを起動した場合、「git: https://github.com "」というラベルの付いた一般的な資格情報セクションでアイテムを探します。これらを削除すると、次回に再作成されますが、クレデンシャルヘルパーユーティリティは新しいクレデンシャルを要求します。
私の答えを見つけました こちら :
~/.gitconfig
を編集して、次を追加します。
[url "[email protected]:"]
insteadOf = https://gitlab.com/
別の問題を解決しますが、エラーコードは同じです...
Sshの代わりにhttpsを使用し続けたい場合は、セキュリティ上の理由からユーザー名とパスワードを入力しないでください。
Github OAuth token を試すこともできます。その後、git config remote.Origin.url 'https://{token}@github.com/{username}/{project}.git'
またはgit remote add Origin 'https://{token}@github.com/{username}/{project}.git'
を実行できます
これは私のために働く!
新しいバージョンのGitをインストールして、これを修正しました。私がインストールしたバージョンは https://git-scm.com から2.10.2です。最後の投稿を参照してください: https://www.bountysource.com/issues/31602800-git-fails-to-authenticate-access-to-private-repository-over-https
新しいGit Bashを使用すると、資格情報マネージャーウィンドウが表示され、ユーザー名とパスワードを入力できます。
リモートURLを次のように置き換えます。
git remote set-url Origin https://<username>@github.com/<username>/<repo>.git
CMDなどの通常のWindowsシェルを使用してみてください。
致命的:「 https://github.com 」のユーザー名を読み取れませんでした:エラーなし
Gitを使ってクローンを作成しました
$ git clone -v http://github.com/username/repo-name.git
Cloning into 'repo-name'...
Username for 'https://github.com':
Password for 'https://github.com':
大丈夫、今????。