我正在使用git / github进行项目。它主要用于托管代码源,但它也包含一些大图像。 我将不时更新大图像,但我不想保留它的历史,我只想在我的git / github中使用最新版本。
有没有办法对git说:"保留此文件,但不保留任何历史记录"? 如果没有,如何在提交/推送后立即手动安全地删除我的文件的历史记录?
感谢您的帮助!
答案 0 :(得分:1)
使用一个总是最后一次提交添加大文件的分支进行开发
除此之外的所有提交都不应添加任何大文件
要对源文件进行更改,您需要在大之前提交,然后使用git rebase
(假设您是使用主分支:git checkout -b src HEAD~1 && git cherry-pick master && git rebase src master && git branch -d src
)命令在所有源提交之上弹出大提交。
要更新一组大文件,您需要将大提交作为最后一个并修改它而不是创建新文件。
在这种情况下,您将无法使用默认git push
行为,只会进行快速更新,并且您必须进行强制更新,例如git push <repository> +master:master
(请注意 + 签署)。
UPD:类似的问题也有类似的答案Managing large binary files with git 在我写完答案之后,我注意到了。
为大文件创建单独的存储库,并在主存储库中将其用作git submodule。
要修改源文件,您只需在主仓库中进行常规提交即可
当你需要在子模块仓库中更新大文件的集合时,你必须修改那里的唯一提交而不是新的。