Git正在推送一个I';我删除了
假设我有一个回购协议,在commit X的回购协议中,我试图上传一个超过github上传限制的视频。因此,考虑到这一点,我在删除那个大文件后立即进行了提交。现在是8次提交之后,我尝试推送我的更改,但每次我这样做,git都试图压缩和推送这段视频,它已经100%不在我的文件结构中,并且已经提交出去了Git正在推送一个I';我删除了,git,github,Git,Github,假设我有一个回购协议,在commit X的回购协议中,我试图上传一个超过github上传限制的视频。因此,考虑到这一点,我在删除那个大文件后立即进行了提交。现在是8次提交之后,我尝试推送我的更改,但每次我这样做,git都试图压缩和推送这段视频,它已经100%不在我的文件结构中,并且已经提交出去了 为什么会这样?有没有一种方法可以让我挑选一个提交并将其从我的git历史记录中删除,这样当我推送时,它就不会被纳入推送,我就可以克服这个问题?即使大文件不再在您的工作树中,它仍然在存储库中,因为有一个包含
为什么会这样?有没有一种方法可以让我挑选一个提交并将其从我的git历史记录中删除,这样当我推送时,它就不会被纳入推送,我就可以克服这个问题?即使大文件不再在您的工作树中,它仍然在存储库中,因为有一个包含它的可访问提交 现在是8点以后 假设您在提交
A
(过去的第8次提交)时添加了大文件,并在提交A+1
(过去的第7次提交)时将其删除,则需要修改回购历史记录,编辑提交A
,然后从中删除大文件。如果在提交A+1
时所做的唯一更改是删除了大文件,则可以将提交A+1
压缩为提交A
,这应该可以解决问题
怎么做
git log
的输出中复制其哈希值。假设您在错误的一次提交之后进行了8次提交;错误提交的父项是HEAD~9
git-rebase--interactivehead~9
(或者将提交的哈希值替换为HEAD~9
)Git
打开默认编辑器,其中包含如下文件:
pick 1be0057 the commit that adds a big file
pick 766b3e2 removed the big file
pick a1adf78 another commit comment
......... all the other commits until HEAD ...........
# Rebase aa99b12..aff6d45 onto aa99b12 (9 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
......... more lines of explanation here .........
Git
将看到文件为空,并将中止操作。仔细检查git日志的输出,然后重新开始fixup
替换行(下一行,包含删除文件的提交)开头的单词edit
。不要改变任何其他东西李>
Git
完成命令Git
成功完成后,Git log
会显示删除文件的提交已消失。此外,如果您检查错误提交引入的修改,您将看到大文件也消失了。现在可以推送到GitHub了
如果rebase失败(不应该),则运行
git-rebase--abort
并git
将存储库恢复到启动前的状态。您可以重试或搜索其他解决方案。您是否添加了git此删除操作?您可以尝试git rm--cached
并再次提交是的--在我撞到墙后,我执行了git添加/提交操作以删除文件并将其记录在git历史记录中。我可以看到我特别说的“添加的视频”的提交和之后说的“删除的愚蠢的视频”的立即提交。我也只是尝试了git rm--cached
,但它找不到文件。很好的答案,修复了问题。谢谢