3

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

如何删除或重命名不可拉取的目录?

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

4

1 回答 1

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,则必须强制推送)。

于 2013-03-19T05:14:28.033 回答