Pycharm 对 Git 的行为很奇怪(树条目中的文件名包含反斜杠)

Leo*_*aus 3 git backslash git-clone pycharm

我刚买了一台新笔记本电脑,想用它克隆我的大学 git 存储库 pycharm

每当我尝试使用 Git bash/GUI 或 Pycharm 克隆存储库时,它都会失败并显示错误,

树条目中的文件名包含反斜杠:'Aufgabe4a.py# coding=utf-8 ...

错误中包含上述文件的完整内容。

由于这是我大学的回购,我不能只是去重命名不属于我的文件。 奇怪的是,这不会发生在我的桌面上。我可以在那里很好地克隆 repo。

  • 两台机器都运行 Windows 10 和最新版本的 Git/Pycharm。
  • SSH 配置正确,我也无法使用 HTTPS 进行克隆。

我期待您的建议,因为我需要这个 repo 来提交我的练习,而且并不总是可以访问我的桌面。

编辑:存储库中没有一个文件在其名称中包含反斜杠。我查看了网站和“工作副本”,这是一个预览 Git 存储库的 iOS 应用程序。

这些是在笔记本电脑上使用 Git 调试时的结果:

18:28:45.034704 exec-cmd.c:237          trace: resolved executable dir: C:/Program Files/Git/mingw64/bin
18:28:45.036676 git.c:439               trace: built-in: git clone git@*removed*.git
Cloning into 'uebungen'...
18:28:45.093121 run-command.c:663       trace: run_command: unset GIT_DIR; ssh git@*university URL* 'git-upload-pack '\''*university repo*'\'''
18:28:48.140893 run-command.c:663       trace: run_command: git index-pack --stdin -v --fix-thin '--keep=fetch-pack 8492 on DESKTOP-QNIF5QA' --check-self-contained-and-connected
18:28:48.155482 exec-cmd.c:237          trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
18:28:48.157663 trace.c:375             setup: git_dir: C:/Users/*removed*/uebungen/.git
18:28:48.157663 trace.c:376             setup: git_common_dir: C:/Users/*removed*/uebungen/.git
18:28:48.157663 trace.c:377             setup: worktree: C:/Users/*removed*
18:28:48.157663 trace.c:378             setup: cwd: C:/Users/*removed*
18:28:48.157663 trace.c:379             setup: prefix: (null)
18:28:48.158012 git.c:439               trace: built-in: git index-pack --stdin -v --fix-thin '--keep=fetch-pack 8492 on DESKTOP-QNIF5QA' --check-self-contained-and-connected
remote:
remote: Enumerating objects: 828, done.
remote:
(...)
remote: Counting objects: 100% (828/828), done.
remote:
(...)
remote:
remote: Compressing objects: 100% (380/380), done.
remote: Total 1184 (delta 490), reused 725 (delta 430)
error: filename in tree entry contains backslash: 'Aufgabe4a.py# coding=utf-8
import random #Liste für die Auswahlmöglichkeiten für den Rechner list = ["Schere", "Stein", "Papier"] #Eingabemöglichkeit für den Benutzer print("Versuchen Sie ihr Glück in Schere, Stein, Papier!") w = (raw_input("Bitte wählen sie Schere, Stein, oder Papier:")) # if w == "Schere":     print("Sie haben Schere gewaehlt!\n") else:     if w == "Stein":         print("Sie haben Stein gewaehlt!\n")     else:         if w == "Papier":             print("Sie haben Papier geweahlt!\n")         else:             print("Sie haben keine zugelassene Eingabe getaetigt!")             exit() #Wahl des Rechners wird, sowie der Ausgang des Spiels entschieden x = list[random.randint(0, 2)] print("Ihr Gegner hat " + x + " gewaehlt!\n")  if w == "Schere":     if x == "Schere":         print("Sie haben unentschieden gespielt!")     else:         if x == "Stein":             print("Stein schleift Schere, Sie haben verloren!")         else:             if x == "Papier":                 print("Schere schneidet Papier, Sie haben gewonnen!") elif w == "Stein":     if x == "Schere":         print("Stein schleift Schere, Sie haben geweonnen!")     elif x == "Stein":         print("Sie haben unentschieden gespielt!")     elif x == "Papier":         print("Papier umfaltet Stein, Sie haben verloren!") elif w == "Papier":     if x == "Schere":         print("Schere schneidet Papier, Sie haben verloren!")     elif x == "Papier":         print("Sie haben unentschieden gespielt!")     elif x == "Stein":         print("Papier umfaltet Stein, Sie haben gewonnen!")'
fatal: Not all child objects of 9(...)c are reachable
fatal: index-pack failed
Run Code Online (Sandbox Code Playgroud)

这是台式机上的调试输出:

21:38:07.768170 exec-cmd.c:237          trace: resolved executable dir:C:/Program Files/Git/mingw64/bin
21:38:07.769170 git.c:440               trace: built-in: git clone git@*uni repo*.git
Cloning into 'uebungen'...
21:38:07.783173 run-command.c:663       trace: run_command: unset GIT_DIR; ssh git@*uni domain* 'git-upload-pack '\''*repo*.git'\'''
21:38:08.587244 run-command.c:663       trace: run_command: git index-pack --stdin -v --fix-thin '--keep=fetch-pack 14672 on Leo-PC' --check-self-contained-and-connected
21:38:08.602247 exec-cmd.c:237          trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
21:38:08.604247 trace.c:377             setup: git_dir: C:/Users/*removed*/uebungen/.git
21:38:08.604247 trace.c:378             setup: git_common_dir: C:/Users/*removed*/uebungen/.git
21:38:08.604247 trace.c:379             setup: worktree: C:/Users/*removed*
21:38:08.604247 trace.c:380             setup: cwd: C:/Users/*removed*
21:38:08.604247 trace.c:381             setup: prefix: (null)
21:38:08.604247 git.c:440               trace: built-in: git index-pack --stdin -v --fix-thin '--keep=fetch-pack 14672 on Leo-PC' --check-self-contained-and-connected
remote:
remote: Enumerating objects: 852, done.
(...)                                                                     remote: Counting objects: 100% (852/852), done.
(...)                                                                        remote: Compressing objects: 100% (373/373), done.
remote: Total 1208 (delta 508), reused 792 (delta 461)
Receiving objects: 100% (1208/1208), 6.24 MiB | 36.54 MiB/s, done.
Resolving deltas: 100% (680/680), done.
21:38:09.614724 run-command.c:663       trace: run_command: git rev-list --objects --stdin --not --all --quiet --alternate-refs '--progress=Checking connectivity'
21:38:09.628565 exec-cmd.c:237          trace: resolved executable dir: C:/Program Files/Git/mingw64/libexec/git-core
21:38:09.630566 trace.c:377             setup: git_dir: C:/Users/*removed*/uebungen/.git
21:38:09.630566 trace.c:378             setup: git_common_dir: C:/Users/*removed*/uebungen/.git
21:38:09.630566 trace.c:379             setup: worktree: C:/Users/*removed*
21:38:09.630566 trace.c:380             setup: cwd: C:/Users/*removed*
21:38:09.630566 trace.c:381             setup: prefix: (null)
21:38:09.630566 git.c:440               trace: built-in: git rev-list --objects --stdin --not --all --quiet --alternate-refs '--progress=Checking connectivity'
21:38:09.639568 chdir-notify.c:65       setup: chdir from 'C:/Users/*removed*' to 'C:/Users/*removed*/uebungen'
21:38:09.639568 chdir-notify.c:40       setup: reparent packed-refs to 'C:/Users/*removed*/uebungen/.git/packed-refs'
21:38:09.639568 chdir-notify.c:40       setup: reparent files-backend $GIT_DIR to 'C:/Users/*removed*/uebungen/.git'
21:38:09.639568 chdir-notify.c:40       setup: reparent files-backend $GIT_COMMONDIR to 'C:/Users/*removed*/uebungen/.git'
Run Code Online (Sandbox Code Playgroud)

Sau*_*ari 7

有关该问题的更新, 请参阅VonC回答


git-for-windows存储库 上有一个未解决的问题(对于v2.24

Git 2.24 破坏现有存储库:树条目中的文件名包含反斜杠

用户carlescufi建议的解决方法是禁用core.protectNTFS.

git config --global core.protectNTFS false
Run Code Online (Sandbox Code Playgroud)

在这里引用 git文档

core.protectNTFS

如果设置为 true,则不允许检出会导致 NTFS 文件系统出现问题的路径,例如与 8.3“短”名称冲突。在 Windows 上默认为 true,在其他地方默认为 false。