所以,我们在Git中遇到这个奇怪的问题,文件路径以某种方式搞砸了。这是一个屏幕截图,显示我的意思:
问题是截图中的第二个文件有“Frontend \ UserType.php”(反斜杠作为分隔符),它应该是“Frontend / UserType.php”(如上图所示)。我们出于某种原因看到了这两个文件。当我运行git ls-files时,我将“Frontend \ UserType.php”作为文件。
我的同事正在使用Windows 7和TortoiseGit,我在Debian上,只是从命令行使用git。我不确定问题首先出现在哪里,但它会变得非常令人沮丧。我们已经尝试删除文件并推送,但它只是不知不觉地回来了。
它现在感染了一大堆分支。有谁知道到底发生了什么?我们如何在多个分支机构中修复它?
答案 0 :(得分:3)
如果没有完整的日志,很难确切地说出发生了什么。正如评论中所讨论的,这看起来像你提交了一个名为“Frontend \ UserType.php”的文件。
Git使用正斜杠(“/”)作为路径分隔符,并且文件名中的反斜杠没有问题,因此对于git,这没有问题。如果您尝试检查Windows系统,它可能会造成严重破坏。
最好的选择可能是在Linux / Unix下克隆存储库,或者可能使用Cygwin,然后删除/重命名错误命名的文件。理想情况下,您可能也希望将它们从历史记录中删除(否则如果签出旧版本可能会中断),但这可能没有必要。
答案 1 :(得分:2)
对于那些感兴趣的人,我们通过删除所有分支上的文件,然后使用以下命令将所有文件推回远程来解决问题:
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch path/to/file' \
--prune-empty --tag-name-filter cat -- --all
git push origin --all --force