2017-08-29 1 views
0

Ich Commit normalerweise zu einem Projekt von einem MacOS, und ich habe nicht bemerkt, dass führende und nachstehende Leerzeichen versehentlich in Ordnernamen eingebettet wurden, aber in letzter Zeit habe ich versucht, den Repo von Windows, zu klonen Ich erhalte diesen Fehler:Git Klon erfolgreich, aber Kasse fehlgeschlagen; aufgrund von Ordnern mit führenden oder abschließenden Leerzeichen

Gibt es eine Möglichkeit, erfolgreich aus Windows auschecken, ohne von der Mac zu ändern? Was zu tun, um führende und abschließende Leerzeichen zu verhindern, die in Windows zu fehlgeschlagenem Auschecken führen? Gibt es eine Möglichkeit, Finder zu zwingen, alle führenden oder nachgestellten Leerzeichen in macOS hervorzuheben, oder noch besser: sie aus Kompatibilitätsgründen abzulehnen?

+2

Ist 'Ordner 'das Repository dir, du hast das Repo in? Um solche Dinge in Zukunft auf OSX abzulehnen, können Sie einfach einen Pre-Commit-Hook schreiben, der den Commit-Inhalt (oder nur die Verzeichnisse) nach Leerzeichen prüft. –

+0

@Jens, Nein, es ist nicht das Repository-Verzeichnis, tatsächlich sind mehrere untergeordnete Verzeichnisse führende Leerzeichen oder nachgestellte Leerzeichen oder beides. Wie Sie vorschlagen, wäre das Schreiben von Pre-Commit Hook die beste Lösung, die etwas wie folgt tut: https://Stackoverflow.com/a/46035672/2008463 –

Antwort

1

Am einfachsten wäre es, sie in MacOS umzubenennen. Aber man kann es in Windows beheben als auch Low-Level-Befehlen:

  • Verwenden sparse checkout den gebrochenen Weg von der Kasse überspringen
  • des dir Baum Hash Finden Sie heraus: git ls-tree HEAD:<parent dir> oder git ls-tree HEAD, wenn das Verzeichnis in der obersten Ebene ist git update-index --add --cacheinfo 040000,df2b8fc99e1c1d4dbc0a854d9f72157f1d6ea078,valid_dir
  • entfernen sie das ältere Verzeichnis: git rm -r --cached 'invalid_dir '
  • Com, wäre es so etwas wie "040000 Baum df2b8fc99e1c1d4dbc0a854d9f72157f1d6ea078 invalid_dir"
  • Fügen sie den Baum als neuen Namen drucken Mit den Umbenennungs: git commit -m 'Rename invalid direct'
  • aktualisieren worktree das gültige Verzeichnis zur Kasse: git reset --hard (HINWEIS: Ich nehme an, Sie haben keine Arbeit noch in diesem Fall, so gibt es nichts zu verlieren)
+0

Vielen Dank für die Antwort. Wow, das ist komplizierter als ich erwartet habe. Du hast recht, wenn du die Dateien änderst und die Dateien von Mac umbenennst, wäre das viel einfacher. –

Verwandte Themen