在Git存储库上删除无法拉到PC的目录

时间:2013-03-19 02:23:22

标签: git github

在处理mac时,我的IDE生成了一个包含:(冒号)字符的目录,该字符被推送到git存储库。当我以后切换到我的电脑上工作时,我发现我无法拉出目录,收到fatal: cannot create directory at... invalid argument错误。

如何删除或重命名无法使用的目录?

我正在使用GitHub.com,因此使用网站界面的解决方案也是可以接受的。

1 个答案:

答案 0 :(得分:3)

您需要记住git pull实际上是一个两步过程。首先,它使用fetch来检索远程文件。然后,它会尝试执行fast-forward merge直接在您的工作之上应用更改。

所以在遥控器上使用fetch。这将确保您在git仓库中设置了远程更改集。我想说从git repo运行以下命令:

ls | xargs -I'{}' git checkout -- '{}'

但你说你在Windows机器上,所以你可能只需要循环并手动完成。此外,这假设您的仓库的根目录中没有创建新文件。

现在,如果您确实想要还原目录的创建,请执行以下操作(这假设远程为origin,分支为master)。

git update-ref refs/heads/master $(git rev-parse origin/master)
git add --all .
# amend the commit to remove the folder from history
# only do this if you can rebase the remote w/o repercussion
git commit --amend
# otherwise just add a new commit on top of the old
git commit

现在查看日志以查看一切是否正常,如果确实如此,则向上推到远程(如果您使用--amend则必须强制推送。)