【问题标题】:git - how to remove a file that is too big from my current commit [duplicate]git - 如何从我当前的提交中删除一个太大的文件[重复]
【发布时间】:2018-08-11 03:01:15
【问题描述】:

当我执行以下操作时:

git add *
git commit -m "msg"
git push origin develop

我收到以下错误:

Counting objects: 25, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (24/24), done.
Writing objects: 100% (25/25), 46.43 MiB | 2.49 MiB/s, done.
Total 25 (delta 13), reused 0 (delta 0)
remote: Resolving deltas: 100% (13/13), completed with 11 local objects.
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: ffe0c9f32d9cde4cedfc1f4713eb82b9
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File tags is 282.99 MB; this exceeds GitHub's file size limit of 100.00 MB
To https://mygithubrepo
 ! [remote rejected] develop -> develop (pre-receive hook declined)
error: failed to push some refs to 'https://mygithubrepo'

然后我从我的硬盘中删除了文件“标签”,但每次我尝试推送时,我都会收到同样的错误。该文件从未被推送到我的存储库,所以我只需要从当前提交中删除它。我尝试了很多事情,但每次都遇到同样的错误。有什么帮助吗?

当我这样做时

git ls-files

文件“标签”甚至没有显示在列表中。但它仍然在努力推动它?

【问题讨论】:

    标签: git git-commit


    【解决方案1】:

    如果您在上次提交中添加了大文件,Derek 的回答是正确的。 此外,如果您想避免再次添加它,请将其添加到您的 .gitignore 文件中。

    所以,首先:

    git rm --cached <big_file>
    

    然后编辑您的.gitignore 文件,添加大文件名。

    最后将这些更改添加到舞台

    git add .
    

    此时如果你创建一个新的提交,你将无法推送,因为文件无论如何都会在你的 git 文件夹中,所以你需要创建一个修复提交,以便修改你添加的提交大文件:

    git commit --fixup <old-commit-hash>
    

    一旦你准备好了,你就需要变基,有 3 种情况:

    1 - 您在 master 上提交所有内容:

    git rebase <old-commit-hash>^ -i --autosquash
    

    2 - 你在一个分支中,你的大文件提交在同一个分支中:

    git rebase master -i --autosquash
    

    3 - 你在一个分支中,你的大文件提交在一个已经合并的分支中:

    git rebase <old-commit-hash>^ -i --autosquash --preserve-merges
    

    【讨论】:

      【解决方案2】:

      这应该可行:

      git rm --cached <big_file>
      git commit --amend .
      

      这会从跟踪中删除文件,然后修改之前的提交以不包含此文件。

      【讨论】:

      • 我认为重要的是要指出您确实需要修改(如本答案所示),而不是创建新的提交。不修改,历史中大文件依然存在,推送会被拒绝。
      • 所以这会将文件标记为未跟踪?
      • 是的,假设该文件仅包含在您最近的提交中。
      • 我不能做 git rm --cached tags.txt 因为我想我之前已经做过了。而且该文件不再存在于磁盘上。当我执行 git commit --amend 时,我得到以下信息: -------------------- commit-msg.. # Please enter the commit message for your changes。以“#”开头的 # 行将被忽略,并且一条空消息中止提交。 # # 日期:Fri Mar 2 19:53:41 2018 +0100 # # On branch develop # 要提交的更改:#deleted: tags #------------------- -------- 然后我退出并尝试推送,但同样的错误再次出现 -
      • @SimonSondrupKristensen 试试git reset --hard HEAD &amp;&amp; git rm --cached &lt;big_file&gt; &amp;&amp; git comit --amend -m "removed big file" .
      猜你喜欢
      • 2011-12-26
      • 1970-01-01
      • 2017-09-18
      • 2016-07-19
      • 2013-08-11
      • 2012-10-09
      • 2013-11-28
      • 2012-09-10
      • 2021-08-02
      相关资源
      最近更新 更多