远离本地repo:Git,忘记大文件

远离本地repo:Git,忘记大文件,r,git,github,R,Git,Github,正如你即将看到的,我是一个相对的新手。所以请原谅我对git术语的拙劣使用,我还在学习 问题的简要总结:我想把我的本地回购放在GitHub上,但我有一些以前跟踪的文件太大了 背景: 今天早上,我在一个本地存储库中跟踪了各种文件:R脚本、.RData文件、.csv文件等等。我决定通过将存储库推送到GitHub,使其公开可用 当我尝试推送(使用git remote add origin)时https://github.com/me/repo.git接着是git push-u origin master

正如你即将看到的,我是一个相对的新手。所以请原谅我对git术语的拙劣使用,我还在学习

问题的简要总结:我想把我的本地回购放在GitHub上,但我有一些以前跟踪的文件太大了

背景: 今天早上,我在一个本地存储库中跟踪了各种文件:R脚本、.RData文件、.csv文件等等。我决定通过将存储库推送到GitHub,使其公开可用

当我尝试推送(使用git remote add origin)时https://github.com/me/repo.git接着是
git push-u origin master
),我意识到我的一些大数据文件对于GitHub来说太大了。我已经决定,如果.RData文件没有被推送到GitHub,也没有被git跟踪(尽管我不想在本地删除这些文件),那就可以了。但我不知道如何才能做到这一点

到目前为止我尝试过的事情:

  • 首先,我将.RData文件添加到.gitignore文件中。我很快意识到 这对已被跟踪的文件不起任何作用
  • 我使用了
    gitrm-r--cached.
    后跟
    gitcommit-am“Remove-ignored”
    文件“
    ,认为这会帮助git忘记所有这些巨大的 我刚才忽略的文件
  • 在git帮助页面之后,我尝试了
    git commit--ammend
    -切德
    ,但我还是推不动
  • 我试着用这个,但没走多远 b/c显然没有发现任何大于100米的文件。显然我 出了点问题,但决定不再追究
  • 根据我找到的一些技巧,我尝试了
    git
    筛选器分支--树筛选器'git rm-r-f--忽略不匹配*.RData'
    头部
    。这确实起了作用,但我还是推不动。 然而,我现在不再是一大堆太大的文件,而是把注意力集中到 2个文件太大(即使同一个文件中有其他.RData文件) 目录(不再列出)
  • 在我上一次的
    git push-u origin master--force之后,这是终端中的打印输出:

    Counting objects: 1163, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (1134/1134), done.
    Writing objects: 100% (1163/1163), 473.07 MiB | 6.80 MiB/s, done.
    Total 1163 (delta 522), reused 0 (delta 0)
    remote: error: GH001: Large files detected.
    remote: error: Trace: 4ce4aa642e458a7a715654ac91c56af4
    remote: error: See http://git.io/iEPt8g for more information.
    remote: error: File Results/bigFile1.RData is 166.51 MB; this exceeds GitHub's file size limit of 100 M
    remote: error: File Results/bigFile2.RData is 166.32 MB; this exceeds GitHub's file size limit of 100 MB
    To https://github.com/me/repo.git
     ! [remote rejected] master -> master (pre-receive hook declined)
    error: failed to push some refs to 'https://github.com/me/repo.git'
    
    如果你没猜到,我真的不知道我在做什么。。。我实际上是在尝试我能找到的任何代码片段,看看它是否允许我推送。我所有的数据和文件都被备份了,所以我的实验相当厚颜无耻

    考虑到我不愿意跟踪庞大的.RData文件,我如何将本地回购推送到GitHub?


    任何帮助都将不胜感激。谢谢

    我很确定您只需要将它们从.git回购历史记录中删除即可。不仅要从最新版本中删除它们,还需要从您的回购协议中删除它们


    其他地方也介绍了这项技术,请参见或。

    好的,因此我的思路是正确的。为了清楚起见,我必须使用
    git filter branch-f--index filter'git rm-r-f--ignore unmatch*.RData'HEAD
    。因此,不是一个
    --树过滤器
    ,而是一个
    --索引过滤器
    。另外,因为我已经做了其中一个,所以我必须添加第一个
    -f
    ,以覆盖某种类型的“备份”。