有点奇怪的问题,但这是我的场景:我不小心将一个带有大型嵌入式PNG的SVG图像添加到git,commit和push中。昨天我注意到了这个问题并通过删除嵌入的PNG修复了它,因此该图像的大小从1500kb变为35kb。我遇到的问题是我不再需要历史版本(占用1500kb的空间),但我需要在旧版本中存在一个图像(更新的版本)。所以我不想只是删除图像的历史记录,因为我希望旧的版本仍然可以工作 - 我想要的是将新版本及时推送到我提交原始版本的时候,这样就好像我从来没有提交过更大的文件,只是过去刚刚接下来的那个较小的正确文件。这可能吗?
我也是使用github来托管存储库,并且需要推送更新的整个历史记录 - 这很容易吗?
答案 0 :(得分:4)
如果您尚未将存储库推送给其他任何人,则可以使用git rebase -i
轻松完成此操作。标记相关提交以进行编辑,然后根据需要替换图像文件。
您可以使用-f
选项git push
,这会强制您编辑的历史记录覆盖Github上的历史记录。请注意,这可能会让任何已拉动存储库的人感到有些混乱。
答案 1 :(得分:1)
我认为你需要做一个非常混乱的操作,包括樱桃,变基和一般的git魔法。
我真的不担心。保持原状。它只意味着每次克隆repo时你都会下载一些额外的千字节。否则你只是推动和拉动微小的差异......