Git突然停止为我工作。 (我在Windows 7下使用Git Bash。我没有使用Cygwin。)
每当我试图拉动或推动它时说:
Could not create directory '/home/sigod/.ssh'
位于C:\Users\sigod\.ssh
和HOME
的我的SSH密钥设置为/c/Users/sigod
。哪个应该符合various SO questions。
如果我将SSH密钥放入C:\Program Files\Git\home\sigod\.ssh
,那么Git会再次开始工作。但是,如何在没有肮脏解决方案的情况下使其工作?
答案 0 :(得分:2)
Git Bash是使用MSYS2 which is a very close cousin to CygWin构建的。以下可能只适用于您的情况,请按照以下步骤操作:
以管理员身份打开cmd.exe,并将 HOME 系统环境变量设置为指向您的用户目录。
setx -m HOME ^%UserProfile^%
以上命令将为您的系统环境设置 HOME =%UserProfile%。
打开git bash,确保 /etc/nsswitch.conf 文件包含未注释的 db_home 行条目。确保它符合以下配置之一:
选项a:
db_home: env windows cygwin desc
选项b:
db_home: windows
在第2步中尝试选项时完全关闭git-bash(为了确保没有后台进程保持git-bash存活,从Windows注销并重新登录)。
我将上述内容基于解释CygWin version of the same question的答案。
答案 1 :(得分:1)
GitBash类似于使用传统Linux权限的Cygwin。
我建议你确保你的ssh目录存在于正确的位置,并通过从git bash运行以下命令来拥有正确的权限:
mkdir ~/.ssh
chown $USER:$USER -R ~/.ssh
然后运行stat ~/.ssh
以查看权限是否已正确更改
ls ~/.ssh
看到您的密钥已正确安装在正确的位置。
您可以通过运行echo ~
或echo $HOME
来查看哪个目录实际已注册为您的主目录。
您可以修改~/.bashrc
并添加第export HOME=/some/directory
行
通过输入命令mount
MINGW64 /c $ mount
C:/Program Files/Git on / type ntfs (binary,noacl,auto)
C:/Program Files/Git/usr/bin on /bin type ntfs (binary,noacl,auto)
C:/Users/MyUser/AppData/Local/Temp on /tmp type ntfs (binary,noacl,posix=0,usertemp)
C: on /c type ntfs (binary,noacl,posix=0,user,noumount,auto)
D: on /d type ntfs (binary,noacl,posix=0,user,noumount,auto)
如果没有其他工作,您还可以尝试修改Windows中的%HOME%
环境变量,以确保它指向正确的路径。但是,任何windows env var都会被你添加到~/.bashrc
答案 2 :(得分:0)
同样的事情:无法在Git Bash for Windows中创建目录'/home/carlos.leao/.ssh',版本为2.17.1.2-64-bit。使用Windows 10。
用sigod解决方法解决。但是创建文件夹结构C:\ Program Files \ Git \ home \ carlos.leao并将文件夹C:\ Users \ carlos.leao.ssh复制到其中我已经创建了一个符号链接来自C:\ Users \ carlos .leao.ssh到C:\ Program Files \ Git \ home \ carlos.leao.ssh。要做到这一点(用你的Windows用户名替换carlos.leao):
像魅力一样!
答案 3 :(得分:0)
确保您正在执行哪个[ssh.exe]! $其中ssh
D:\xxxx\bin\ssh.exe
C:\Program Files\Git\usr\bin\ssh.exe
C:\Windows\System32\OpenSSH\ssh.exe
在我的情况下,我的导出路径中还有另一个ssh.exe。 (即:D:\ xxxx \ bin \ ssh.exe)
因此,我删除了ssh.exe并保留了原始文件! (C:\ Program Files \ Git \ usr \ bin \ ssh.exe)
现在一切都很好!
答案 4 :(得分:0)
你可以使用 cd ~/.ssh/ 而不是 ~/.ssh
cd ~/.ssh/