TL; DR: जांचें कि क्या आप पढ़ / लिख सकते हैं /dev/tty
। यदि नहीं और आपने su
शेल को खोलने के लिए उपयोग किया है, तो जांचें कि क्या आपने इसे सही तरीके से उपयोग किया है।
मैं एक ही समस्या का सामना कर रहा था लेकिन लिनक्स पर और मुझे समस्या मिल गई है। मेरे पास अपनी साख संग्रहीत नहीं है, इसलिए मैं हमेशा उन्हें शीघ्रता से इनपुट करता हूं:
Username for 'https://github.com': foo
Password for 'https://foo@github.com':
जिस तरह से git http (s) कनेक्शन का उपयोग कर रहा है, /usr/lib/git-core/git-remote-https
आप यहां स्ट्रेस देख सकते हैं:
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 config --global user.name "Your Name Here"