我的团队正在使用两个遥控器:origin
和backup
。
backup
是基于GitHub的,因此它不支持大文件。有人用大文件提交origin
,从那以后我们都做了很多提交。
我们已经删除了那个大文件。(事实上,我没有完成pull
提交,我认为我实际上并没有下载因为它在后续提交中被删除了。)
我试过了
git checkout master
git checkout --orphan tmp
git commit -m "Root"
git push backup master
但由于该大文件超出了大小限制,push
失败。
如何将当前状态origin
推送到backup
而不是大文件?
答案 0 :(得分:0)
备份是基于GitHub的,因此它不支持大文件。有人用大文件提交了origin,从那以后我们都做了很多提交。
我们已经删除了那个大文件。
如果您在其上运行了git rm
,那么您没有。 Git在每次提交中存储所有文件的完整链。当你git rm
一个文件时,它仍然在历史中。它仍在存储库中。你必须从历史中彻底抹杀它。最简单的方法是使用BFG Repo Cleaner。
但是有一种更好的方法来处理大文件问题:允许它们。
使用git-lfs
处理大文件。这仅存储指向存储库中的大文件的指针。实际文件存储在别处。然后,您可以将所有大文件放在您想要的存储库中。
仍然存在如何处理已经提交的大文件的问题。 BFG再次救援!你可以use the BFG to retroactively place large files into git-lfs
。
$ java -jar bfg.jar --convert-to-git-lfs 'large_file_name' --no-blob-protection
然后继续正常。