Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git-如何从当前提交中删除太大的文件_Git_Git Commit - Fatal编程技术网

git-如何从当前提交中删除太大的文件

git-如何从当前提交中删除太大的文件,git,git-commit,Git,Git Commit,当我执行以下操作时: 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. Tota

当我执行以下操作时:

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 rm --cached <big_file>
git commit --amend .
git-rm——缓存
git提交——修改。

这将从跟踪中删除该文件,然后修改以前的提交,使其也不包含该文件。

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

因此,首先:

git rm --cached <big_file>
此时,如果创建一个新的提交,您将无法推送,因为该文件无论如何都将位于您的git文件夹中,因此您需要创建一个修复提交,以便在添加大文件时修改提交:

git commit --fixup <old-commit-hash>
3-您在一个分支中,并且您的大文件提交在一个已合并的分支中:

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

我认为有必要指出,您确实需要修改(如本答案所示),而不是创建新的提交。如果不进行修改,大文件仍然存在于历史记录中,推送将被拒绝。因此,这将标记该文件为未跟踪?是的,假设该文件仅包含在您最近的提交中。我无法执行git rm--cached tags.txt,因为我想我之前已经完成了。而且该文件也不再存在于磁盘上。当我执行git commit--amend时,我会得到以下结果:---------------commit msg请输入更改的提交消息。以“#”开头的行将被忽略,空消息将中止提交日期:2018年3月2日星期五19:53:41+0100关于分支开发要提交的更改:#删除:标记#------然后我退出并尝试推送,但同样的错误再次出现-@SimonSondrupKristensen try
git reset--hard HEAD&&git rm--cached&&git commit--amend-m“删除的大文件”
git rebase <old-commit-hash>^ -i --autosquash
git rebase master -i --autosquash
git rebase <old-commit-hash>^ -i --autosquash --preserve-merges