推送后删除git remote上的二进制文件

时间:2016-07-10 14:30:19

标签: git

我从本地计算机(通过git init --bare创建)推送后,如何擦除远程git存储库中的文件(通过git clone创建)?我有root权限访问我的服务器。我尝试ssh进入机器并从制造裸仓库的目录中执行git reset --hard HEAD~1,但是我收到一条错误消息,指出我不在工作树中。

这是我的情况。我有一个跨平台项目,我将备份保存在家庭网络上的git服务器上。我正在将IDE文件与我的源代码一起存储,以便将整个存储库放在"新鲜的"已安装IDE的计算机具有打开解决方案或工作空间,构建和运行所需的一切。昨晚很晚,当我的注意力几乎消失时,我检查了一个巨大的提交,其中包含Visual Studio在运行时生成的大型二进制文件(~35MB)(SolutionName.VC.dbSolutionName.VC.VC.opendb等) 。我发现这些文件大大减慢了git clone,因此我想将它们从我的存储库中完全删除。

我愿意签出旧副本并重新提交/重新推送更改。此外,作为预防措施,我已将不需要的文件添加到.gitignore

2 个答案:

答案 0 :(得分:2)

你与git reset --hard HEAD~1走在正确的轨道上, 但你应该在你的克隆中这样做,而不是在服务器上。 在你这样做之后,你需要推送到服务器, 使用-f选项强制重写历史记录

git reset --hard HEAD~1
git push origin master -f

在此之后,更新.gitignore并提交它, 然后添加其他更改,而不会在之前意外提交Visual Studio文件。 最后提交并再次推送, 您的相关更改应该再次出现, 克隆应该再快。

答案 1 :(得分:-1)

git rm filename 
git commit 
git push 

应该做的工作。这也会在本地删除文件,但不要将它用于您不想在线的文件。