gpt4 book ai didi

git - 从已在本地删除的旧提交中删除已提交的文件

转载 作者:行者123 更新时间:2023-12-04 08:01:10 25 4
gpt4 key购买 nike

我设法在提交 A001 中偶然提交了一些文件.这些文件非常大(每个大约 100MB)。注意到我的错误后,在下一次提交中,我用 rm 删除了这些文件。命令,并将这些更改提交到提交 A002 .我认为这解决了我的问题并继续开发。几次提交后,假设提交 A005我试图将所有内容推送到远程(大文件已被删除,但它们仍在提交 A001 中提交),推送失败并显示以下消息:

remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
...
...

! [remote rejected] melodic-dev -> melodic-dev (pre-receive hook declined)
没关系,因为提交 A001 中仍然存在大文件.
我该怎么做:
  • 返回提交 A001 ,取消暂存那些大文件并重新创建提交 A001如果没有删除那些大文件,请执行相同的操作以提交 A002
  • 重新创建以下所有提交 A003 - A005因为他们在重建的顶端 A001_edited-A002_edited在没有那些大文件的情况下提交
  • 推更正 A001-A005提交到远程分支

  • 我需要类似的东西:创建包含所有提交的新分支 NEW_BRANCH:A001-A005 .在那个分支中,我想从提交 A001 中删除一些文件,因此我会有 NEW_BRANCH: A001_edited提交,我想 merge OLD_BRANCH:A001-A002-A003-A004-A005NEW_BRANCH: A001_edited-A002_edited所以我有以下内容: OLD_BRANCH: A001_edited-A002_edited-A003-A004-A005A001_edited = A001 没有提交(还原 git add Large files)那些大文件
    A002_edited = A002 不删除(还原 git rm Large files)那些大文件
    在历史某个地方的两次连续提交中,我想删除一些暂存/未暂存文件并保持其他所有内容相同。
    我尝试了一些东西,但没有成功。
    我希望我已经足够澄清我的问题,如果没有让我知道:)
    感谢您的时间和帮助。

    最佳答案

    这可以通过一种称为 rebase 的强大而可怕的方法来解决! :) 这是一种方法:

  • 运行 git rebase -i --root .这将打开一个编辑器,列出从 A001 到最新提交的所有提交。
  • 在该文件中,将 A001 前面的“pick”一词更改为“edit”。保存文件并关闭编辑器。
  • Git 会让你回到你创建 A001 之后的那一刻(你错误地添加了大文件)。运行 git rm --cached bigfile1 bigfile2从索引中删除它们,然后运行 ​​git commit --amend修复提交 A001 以不包含它们。
  • 运行 git rebase --continue .这将在您更改的提交之上重新应用所有提交。 A002 现在应该只包含您所做的更改而不是删除文件。没有提交应该再包含大文件。

  • 希望对您有用,如果您遇到任何问题,请告诉我!

    关于git - 从已在本地删除的旧提交中删除已提交的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66457704/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com