无法在github中推送到空仓库

时间:2018-09-28 07:34:15

标签: git github

我正在尝试将本地存储库推送到github存储库,但似乎失败。我按照here的指示进行了操作,直到最后一步,一切似乎都还不错:

\zs
  

[远程拒绝]主机->主机(预接收挂钩被拒绝)

最初我至少有2个问题,因为我在github施加的文件夹中也有一个巨大的文件(超出了100MB的限制)。无论如何,我以为我用以下方法删除了大文件:

git push origin master

我看不到使用的大文件夹

git rm -r --cached model/
git commit -m "Object Detection v0.1"

所以我想我一定已经删除了。

我的远程存储库为空。我检查了这个answer,但由于某种原因,最流行(不是公认的答案)的答案是gitlab而不是github。而且我找不到与github相关的任何设置,也无法破译接受的答案。

所以,我的问题是如何将本地存储库推送到远程存储库(我拥有远程存储库)?另外,为什么我仍然看到有关已删除的巨大文件(我想是)的错误消息?为此,我还应该执行其他任何操作吗?

编辑:

要回答为什么question here不是我的副本(反之亦然):
我拥有该存储库,因此我无法联系任何人(如在此处接受的答案所建议),并且问题不在服务器端,因为我实际上设法在没有巨大文件的情况下推送了一个存储库。

我的情况很简单(我的提交实际上没有包含任何实际更改),并且基本上通过创建新的本地仓库绕过了我的问题,但这对@Tim的回答确实很有用。

1 个答案:

答案 0 :(得分:3)

您实际上并没有通过提交来删除大文件夹。该文件仍然是您历史记录的一部分,并且该提交只是不带大文件夹的另一个版本。由于您尚未推送,并且假定仅存在最新提交才能删除大文件夹,所以建议执行以下步骤:

git reset --hard HEAD~1                     # remove latest commit
git rm -r --cached model/                   # remove large folder
git commit --amend 'Object Detection v0.1'  # rewrite initial commit

这假定除了上面显示的试图删除大文件夹的提交以外,您只有一个初始提交。如果您提交了多次 次提交,则必须使用交互式基础(git rebase -i)重写历史记录,或者可能使用filter-branch

编辑:根据您的评论,您将进行多次提交。然后,您可以尝试进行交互式变基:

git rebase -i --root

这应该在bash中调出一个编辑器,为您显示一个类似于以下内容的列表:

pick d93jk8f first commit message
pick 2k9vn3d second commit message
pick ekmv098 third commit message
pick f93kl2k fourth commit message

提交应该从上到下从最旧到最新列出。现在,将每次提交都从pick更改为edit。要进入编辑模式,请输入 SHIFT + I

edit d93jk8f first commit message
edit 2k9vn3d second commit message
edit ekmv098 third commit message
edit f93kl2k fourth commit message

现在退出并保存: ESC ,然后是:wq!

这应该启动变基。 Git现在将重新应用您的所有提交,并且它将在每次提交时暂停。每次暂停时,您都必须删除大文件夹,前提是该文件夹当时已存在:

git rm -r --cached model/

然后git add进行更改,提交,然后执行git rebase --continue以继续进行变基。完成整个过程后,应该从您的历史记录中完全清除该大文件夹。

请注意,我从第一个提交开始就重新部署。例如,如果您知道大文件仅在三次提交之前提交过,那么您可以通过以下方式启动重新设置:

git rebase -i HEAD~3

这将使您仅重写回溯三次提交的历史记录。但是,在这种情况下,从第一次提交开始似乎很明智。