git避免推送二进制文件

时间:2012-09-24 10:58:08

标签: git binaries

假设我有一个私有存储库和一个公共存储库。我使用私人开发 存储库,并在重要的步骤,我做了一个提交,我保存所有,来源] 和二进制文件。保存二进制文件的原因是允许先前恢复 已提交的版本,无需重建所有二进制文件。 当我完成功能的开发后,我将其推送到公共存储库, 一个由集成商访问的,需要我的贡献和其他开发人员' 同样,并集成了所有这些。 在完成所有贡献之后,集成商总是重建二进制文件。 因此,我不需要将二进制文件从我的私有存储库中推送到 公众,并让他拉他们。 有没有办法在git中避免在此工作流程中推送和拉出二进制文件?

5 个答案:

答案 0 :(得分:1)

Fedora项目的作用是拥有一个旁视缓存,其中二进制文件被签入并由其校验和标识 - 如果您不需要二进制文件,只需忽略列出校验和的文件和相应的文件名称

答案 1 :(得分:1)

一种方法是拥有两个存储库,即源存储库和二进制存储库。将源存储库克隆为二进制存储库的子模块,以便将特定源修订与二进制文件关联。

答案 2 :(得分:0)

简而言之,使用二进制文件命名目录:

.gitignore

答案 3 :(得分:0)

我认为你不想要的是什么。你想要2个远程回购,但是将二进制文件推送到其中一个而不是另一个。我不认为如果不使用特殊命令(在提交时忽略.gitignore文件的选项),repo就可以推送二进制文件。

查看.gitignore功能以忽略提交中的文件(因此推送)。但这并不是你想要的,因为它会阻止所有二进制文件被推送。

请注意检查二进制文件以获取git,因为所有检出都会更新二进制文件的时间戳(可能比项目中的其他文件更新,因此增量构建不会重建内容,因为许多工具使用文件时间戳来计算出什么重建)。

问题在于,为了推送任何东西,你必须提交它。但是两个repos都会看到他们共享和分发的分支的所有提交。

因此,唯一的解决方法是在本地工作副本(以及私人仓库)中创建一个新分支,此分支只会提交二进制文件的提交。但这对你来说很难解决和实施。

即。你需要设置工作流来将分支切换到这个仅二进制分支,然后搜索所有二进制文件,然后生成一个提交(可能忽略.gitignore或编辑),然后推送到私有仓库,然后撤消对repo所做的任何更改(恢复旧的) .gitgnore如果你编辑它),然后切换回只包含源代码的原始分支。

我的建议是重新考虑为什么需要推送二进制文件。您的项目重建需要多少分钟/小时?

答案 4 :(得分:0)

您可以尝试在单独的目录中构建二进制文件。然后,您可以将其视为另一个本地存储库,并使您的源存储库与二进制文件保持一致。将它们放在本地存储库中并避免将特定文件推送到远程存储库会破坏DVCS的目的。