如何用git中的最新修订覆盖文件的历史修订?

问题描述

| 有点奇怪的问题,但这是我的情况:我不小心将带有大型嵌入式PNG的SVG图像添加到git中,提交并推送。昨天我注意到了这个问题,并通过删除嵌入式PNG进行了修复,因此该图像的大小从1500kb变为35kb。我的问题是我不再需要历史版本(占用1500kb的空间),但是我确实需要在这些旧版本中显示一个图像(更新的图像)。因此,我不想删除图像的历史记录,因为我希望旧的修订版仍然可以使用-我想要的是将新版本及时向后推到提交原始修订版时,如果我从未提交过较大的文件,那么过去只能提供较小的正确文件。这可能吗? 我也在使用github托管存储库,并且需要推送更新的整个历史记录-这容易做到吗?     

解决方法

        如果尚未将存储库推送给其他任何人,则可以使用
git rebase -i
轻松完成此操作。将相关的提交标记为要编辑,然后根据需要替换图像文件。 有关更多详细信息,请参阅文档。 您可以在
git push
中使用
-f
选项,这将迫使您编辑的历史记录在Github上被覆盖。请注意,尽管如此,这对于拉存储库的其他人来说可能会有些混乱。     ,        我认为您需要做一个非常麻烦的操作,包括挑选,重新设置基准以及通用git向导。 我真的不会担心。保持原状。这仅意味着每次克隆存储库后,您都将下载一些额外的千字节。否则,无论如何,您只是在推拉微小差异。