我有一些大的视频文件,我不想推到我的遥控器,但我确实想把它们添加到我的本地存储库。有点像.gitignore
文件的远程版本。
这有可能吗?
具体来说,我正在处理一个多媒体项目,其中一个文件夹包含项目元数据文件(它是Screenflow项目)以及媒体。因此,它有一个project.screenflow
文件夹,其中包含.dat
文件和Media\XXXX.aif
、Media\XXXX.mov
等。
我想至少与我的团队共享项目文件(.dat
),如果没有它使用的媒体,在屏幕流中打开项目是没有意义的。然而,在我们的Git文件大小限制为100 me,阻止我推动这些。
目前,我已将Media
排除在.gitignore
之外,可能不得不通过其他方式共享媒体:
发布于 2014-02-07 13:48:44
.gitignore
并不会阻止您在存储库中拥有一个文件(您总是可以强制它)。所以这并不像遥控器中的.gitignore
。
你的问题的直接答案是这是不可能的。Git保存了你的犯罪记录。每一次提交都是由其内容进行的(并对其进行散列)。如果在commit中有一个文件,并且您推动了该提交,那么您就不能要求git只推送该提交的一部分,因为这样就不再是相同的提交了。
然而,有一些方法可以实现你想要的,没有一个是非常干净的。一个例子是使用git子模块,其中您创建了一个子模块,该子模块指向您拥有的另一个本地回购(带有视频文件)。任何人克隆您的远程回购将不会收到视频文件,但他们仍然看到的子模块,引用在您的计算机某处。
另一种方法是使用git子树实际创建另一组提交,不包括视频,然后将人工提交的提交推到存储库。然而,它强加了一些目录结构。
对于这样一个问题,通常的答案是重新思考你的存储库。这些视频对你的存储库至关重要吗?如果没有,那么就不要将它们放在存储库中,既不是本地的也不是远程的。这样的额外资源不属于git存储库(特别是因为它们也没有版本)。
如果您只希望它们在本地计算机中,请务必将它们保存在其他目录中。如果您真的想要访问旧版本,请将另一个目录单独保存在git下。如果你想让别人也看到这些文件,把它们放到一个文件共享网站上。
发布于 2014-02-07 13:48:00
不使用传统的git方法。将文件保存在repo中将更改它后面的每个提交哈希。这样在服务器端就不匹配了。我会考虑为什么你需要他们住在同样的回购,你必须到处推。
你可以让他们在一个单独的回购,然后通过当地的git钩子,如果它是为了处理?如果你在问题中详细说明你的情况,我们也许能帮上忙。
https://stackoverflow.com/questions/21629211
复制相似问题