4

所以,我们在 Git 中遇到了这个奇怪的问题,文件路径以某种方式搞砸了。这是一个屏幕截图,显示我的意思:

截屏

问题是屏幕截图中的第二个文件有“Frontend\UserType.php”(反斜杠作为分隔符),而它应该是“Frontend/UserType.php”(如顶部)。出于某种原因,我们看到了这两个文件。当我运行 git ls-files 时,我得到“Frontend\UserType.php”作为文件。

我的同事正在使用带有 TortoiseGit 的 Windows 7,而我在 Debian 上,只在命令行中使用 git。我不确定问题最初起源于哪里,但它变得非常令人沮丧。我们已经尝试删除文件并推送,但它只是以某种方式不断回来。

它现在已经感染了一大堆树枝。有谁知道到底发生了什么?以及我们如何跨多个分支修复它?

4

2 回答 2

3

对于那些感兴趣的人,我们通过删除所有分支中的文件,然后使用以下命令将所有文件推送回远程解决了这个问题:

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
于 2013-09-24T16:59:58.057 回答
3

如果没有完整的日志,很难准确地说出发生了什么。正如评论中所讨论的,这看起来像您提交了一个名为“Frontend\UserType.php”的文件。

Git 使用正斜杠(“/”)作为路径分隔符,并且文件名中的反斜杠没有问题,所以对于 git 来说这是没有问题的。如果您尝试在 Windows 系统上签出,它可能会造成严重破坏。

最好的选择可能是在 Linux/Unix 下克隆存储库,或者可能使用 Cygwin,然后删除/重命名错误命名的文件。理想情况下,您可能还希望将它们从历史记录中删除(否则,如果签出旧版本,事情可能会中断),但这可能不是必需的。

于 2013-09-24T13:19:11.097 回答