【问题标题】:Git project has a folder with an unsupported invisible characterGit 项目的文件夹中包含不受支持的不可见字符
【发布时间】:2016-11-17 15:14:04
【问题描述】:

我一直在用 Github 上的遥控器做一个 git 项目。它包含几个子模块。

在创建子模块时,我的 git 客户端(Sourcetree)创建了一个带有隐形字符的文件夹,这一直在造成严重破坏。该文件夹已被推送到 Github,我找不到恢复的方法。

子模块文件夹看起来像是名为“cours-divers”,但在 Sourcetree 中显示为“cours020-divers”,在终端中显示为“cours?-divers”。

此外,Sourcetree 无法再显示子模块列表。

在阅读相关主题后,我尝试了什么:

  • 只需将其删除即可。不幸的是,Git 无法正确跟踪此文件,因此它不会被删除。错误信息:fatal: pathspec 'cours020-divers' did not match any files
  • 正在做git reset --hard [revision]。这适用于我的本地版本,但远程(Github)需要我拉动更改。我还需要能够重置遥控器。
  • git checkout [revision] . 似乎让事情恢复正常,但有问题的文件仍在污染项目。

有没有办法让 Git 在本地和远程有效地忘记该文件?

【问题讨论】:

  • 关于上面可能的重复 - 由于文件名问题,这种方法在我的情况下不起作用。如果 git 无法处理文件名中的字符,则不能 git rm 文件。
  • 这个问题能说明问题吗? stackoverflow.com/questions/31846045/…我想知道您是否可以删除不可见的字符并执行git add --all 来暂存重命名的文件以进行提交。
  • 感谢您的链接!但是,在那个问题中,字符出现在 inside 文本文件中 - 在我的情况下,它在实际文件名中。无论如何,我摆脱了它......

标签: git github filenames


【解决方案1】:

最后,经过反复试验,我发现这个帖子提供了答案:Resetting remote to a certain commit

git reset --hard <commit-hash>
git push -f origin master

这样做确实可以有效地将项目及时推迟,并消除对违规文件的任何引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    相关资源
    最近更新 更多