我是git的新手,完全迷失了。我确信我会错过一些基本的东西。
问题如下:
与revert multiple git commits类似,我通过两次完全删除了最后两次提交
git reset --hard HEAD^
git push -f origin master
现在,我无法在git log中看到最后两次提交,但存储库/历史记录仍然很大。
说,我是存储库的唯一用户和没有价值的历史记录,我只是需要以某种方式缩小存储库。但是,我只能在本地执行更改,然后将它们推送到存储库,因此,fully deleting the repository将无法正常工作,因为
rm -rf .git
删除了git,但我无法推送。
做3有多糟糕?我能做些什么来实现我的总体目标?我将不胜感激任何建议。非常感谢提前。
答案 0 :(得分:1)
@Jubobs总而言之,要使解决方案在上面工作,我必须更改远程仓库的一些设置。特别是,我必须允许以下操作
git push -f origin master
通过,首先,ssh远程仓库,然后设置
git config receive.denyNonFastforwards true
此外,要从远程仓库上的过时文件中爬出空间,请运行
git gc --aggressive --prune=all
出现了一个自然的问题:(1)ssh远程仓库,(2)删除.git文件夹,以及(3)运行git init来初始化新的仓库更容易。嗯,这也是一个解决方案。
答案 1 :(得分:0)
仅限(请确保您同意以下每个要点)
执行以下操作。删除项目目录中的.git
文件夹,然后再次初始化Git。
rm -rf .git
git init
将遥控器添加到repo的配置中:
git remote add origin <url-of-remote-in-question>
拍摄快照:
git add <at-your-discretion>
git commit -m "initial commit"
然后强制将全新的master
分支推送到遥控器:
git push -f origin master
编辑:如果最后一次强制推送命令失败,则必须表示您的远程仓库配置为拒绝非快进合并。见Source Forge repo gives "denying non-fast-forward refs/heads/master" error