Git hörte plötzlich auf, für mich zu arbeiten. (Ich benutze Git Bash unter Windows 7. Ich benutze Cygwin nicht.)
Jedes Mal, wenn ich versuche zu ziehen oder zu drücken, heißt es:
Verzeichnis '/home/sigod/.ssh' konnte nicht erstellt werden
Meine SSH-Schlüssel in C:\Users\sigod\.ssh
und HOME
sind auf /c/Users/sigod
gesetzt. Welches sollte nach verschiedenenSOFragen funktionieren .
Wenn ich SSH-Schlüssel in C:\Program Files\Git\home\sigod\.ssh
lege, funktioniert Git wieder. Aber wie kann ich es ohne schmutzige Lösungen zum Laufen bringen?
Git Bash wird mit MSYS2 erstellt, was CygWin sehr nahe kommt . Das Folgende könnte in Ihrem Fall funktionieren, gehen Sie folgendermaßen vor:
Öffnen Sie cmd.exe als Administrator und legen Sie die UmgebungsvariableHOMEso fest, dass sie auf Ihr Benutzerverzeichnis verweist.
setx -m HOME ^%UserProfile^%
Der obige Befehl setzt HOME =% UserProfile% für Ihre Systemumgebung.
Öffne git bash und stelle sicher, dass /etc/nsswitch.conf eine unkommentierte db_home Zeile enthält. Stellen Sie sicher, dass es mit einer der folgenden Konfigurationen übereinstimmt:
Option a:
db_home: env windows cygwin desc
Option b:
db_home: windows
Schließen Sie git-bash vollständig, wenn Sie Optionen in Schritt 2 ausprobieren (um sicherzugehen, dass keine Hintergrundprozesse git-bash am Leben erhalten, melden Sie sich von Windows ab und melden Sie sich wieder an).
Ich habe das oben Gesagte auf eine Antwort gestützt, die die CygWin-Version derselben Frage erklärt .
GitBash ähnelt Cygwin, das herkömmliche Linux-Berechtigungen verwendet.
Ich schlage vor, Sie stellen sicher, dass Ihr ssh-Verzeichnis an der richtigen Stelle vorhanden ist und die richtigen Berechtigungen hat, indem Sie die folgenden Befehle aus git bash ausführen:
mkdir ~/.ssh
chown $USER:$USER -R ~/.ssh
führen Sie dann stat ~/.ssh
aus, um festzustellen, ob die Berechtigungen korrekt geändert wurden
ls ~/.ssh
um sicherzustellen, dass Ihr Schlüssel ordnungsgemäß am richtigen Ort installiert ist.
Sie können sehen, welches Verzeichnis tatsächlich als Ihr Ausgangsverzeichnis registriert ist, indem Sie echo ~
oder echo $HOME
ausführen.
Sie können Ihr Linux-HOME ändern, indem Sie ~/.bashrc
ändern und die Zeile export HOME=/some/directory
hinzufügen.
Sie können sehen, wie Ihr GitBash-Dateisystem Ihrem Windows-Dateisystem entspricht, indem Sie den Befehl mount
eingeben.
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)
Wenn nichts anderes funktioniert, können Sie auch versuchen, die Umgebungsvariable %HOME%
in Windows zu ändern, um sicherzustellen, dass sie auf den richtigen Pfad verweist. Aber jede Windows-Umgebungsvariable wird von Linux-Versionen überschrieben, die Sie zu Ihrem ~/.bashrc
hinzufügen.
Das Gleiche hier: Das Verzeichnis '/home/carlos.leao/.ssh' konnte in Git Bash für Windows, Version 2.17.1.2-64-Bit, nicht erstellt werden. Unter Windows 10.
Lösen Sie mit Sigod Workaround. Aber statt des Erstellens des Ordners struture C:\Programme\Git\home\carlos.leao und des Kopierens des Ordners C:\Users\carlos.leao.ssh habe ich einen symbolischen Link von C:\Users\carlos erstellt .leao.ssh nach C:\Programme\Git\home\carlos.leao.ssh. Um dies zu tun (ersetzen Sie carlos.leao durch Ihren Windows-Benutzernamen):
Klappt wunderbar!