我从本地计算机(通过git init --bare
创建)推送后,如何擦除远程git存储库中的文件(通过git clone
创建)?我有root权限访问我的服务器。我尝试ssh进入机器并从制造裸仓库的目录中执行git reset --hard HEAD~1
,但是我收到一条错误消息,指出我不在工作树中。
这是我的情况。我有一个跨平台项目,我将备份保存在家庭网络上的git服务器上。我正在将IDE文件与我的源代码一起存储,以便将整个存储库放在"新鲜的"已安装IDE的计算机具有打开解决方案或工作空间,构建和运行所需的一切。昨晚很晚,当我的注意力几乎消失时,我检查了一个巨大的提交,其中包含Visual Studio在运行时生成的大型二进制文件(~35MB)(SolutionName.VC.db
,SolutionName.VC.VC.opendb
等) 。我发现这些文件大大减慢了git clone
,因此我想将它们从我的存储库中完全删除。
我愿意签出旧副本并重新提交/重新推送更改。此外,作为预防措施,我已将不需要的文件添加到.gitignore
。
答案 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
应该做的工作。这也会在本地删除文件,但不要将它用于您不想在线的文件。