无需文件即可将repo状态推送到远程

时间:2018-05-06 21:38:20

标签: git github

我的团队正在使用两个遥控器:originbackup

backup是基于GitHub的,因此它不支持大文件。有人用大文件提交origin,从那以后我们都做了很多提交。

我们已经删除了那个大文件。(事实上,我没有完成pull提交,我认为我实际上并没有下载因为它在后续提交中被删除了。)

我试过了

git checkout master
git checkout --orphan tmp
git commit -m "Root"
git push backup master

但由于该大文件超出了大小限制,push失败。

如何将当前状态origin推送到backup而不是大文件?

1 个答案:

答案 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

然后继续正常。