我的问题很简单:
我有一个带有本地Git仓库的项目,我已将其推送到Bitbucket。我想要做的是删除本地仓库并将我的项目提交到远程仓库,这样我的硬盘上就没有双尺寸项目。
对此有什么好的解决方案吗?
我担心.git
文件夹可能会耗尽我的硬盘。创建我的本地Git仓库会保留所有文件,最后我创建了一个两倍大的项目。该应用程序处理媒体文件...它没有Git 500 MB。
答案 0 :(得分:0)
创建本地git会保留所有文件
是的,这就是git所做的。 From a cursory Google search:
而不是客户端同步的单个中央存储库,每个对等方的代码库工作副本都是真正的存储库... [这]导致与集中式系统的一些重要差异
...
- 每个工作副本都有效地充当代码库及其变更历史的远程备份,防止数据丢失
...
允许用户在未连接到网络时高效工作。
使大多数操作更快。
允许私人工作,因此即使是他们不想发布的早期草稿,用户也可以使用他们的更改。
...
- 避免依赖一台物理机作为单点故障。
至于你的“问题”
我担心.git文件夹可能会耗尽我的硬盘。
A git repository of Firefox is 200 MB。考虑项目相对于Firefox的大小,然后准备为项目的git存储库留出一个慷慨的ten thousand, two-hundred and forty kilobytes。
答案 1 :(得分:0)
我想指出一些事情:
有关完整说明,请参阅下面的每个部分。
在Git中我无法直接向远程存储库提交,而无需先通过本地存储库。这不是Git的工作方式。如果你想提交,我认为你只能使用本地存储库。
.git
目录 下的文件已压缩 ,因此.git
目录下的Git仓库可能比您的工作副本小得多checkout,特别是如果它只是文本而不是二进制文件(更多关于二进制文件)。在工作中,我使用的Git仓库大约为300 MB,但工作副本大约为2.5 GB,因此相比实际的仓库本身要小得多。
你可以configure Git to use different compression levels:
core.compression
整数
-1..9
,表示默认的压缩级别。-1
是zlib的默认值。0
表示没有压缩,1..9
是各种速度/尺寸权衡,9
最慢。如果设置,则会为其他压缩变量提供默认值,例如core.loosecompression
和pack.compression
。
core.loosecompression
整数
-1..9
,表示不在包文件中的对象的压缩级别。-1
是zlib的默认值。0
表示没有压缩,1..9
是各种速度/尺寸权衡,9
最慢。如果未设置,则默认为core.compression
。如果未设置,则默认为1
(最佳速度)。
pack.compression
整数
-1..9
,表示包文件中对象的压缩级别。-1
是zlib的默认值。0
表示没有压缩,1..9
是各种速度/尺寸权衡,9
最慢。如果未设置,则默认为core.compression。如果未设置,则默认为-1
,即zlib默认值,这是“速度和压缩之间的默认折衷(当前等同于级别6
)。”请注意,更改压缩级别不会自动重新压缩所有现有对象。您可以通过将
-F
选项传递给git-repack(1)来强制重新压缩。
您可以阅读有关Git packfiles from the free online Pro Git book的更多信息。
最后,原始海报制作this comment:
好吧......应用正在处理媒体文件......它是500mb没有git
Git 不适合版本化二进制文件 (如媒体文件,如图片,视频,音频剪辑等),因为Git无法保留文字像对文本文件一样对它们进行更改的差异增量,它实际上必须在每次对其进行更改时保留每个版本的二进制文件。
因此,如果您有一个名为logo.jpg
的1 MB图片文件,并对其进行了一些小改动,Git将不得不再次存储整个logo.jpg
文件,再添加1 MB你的存储库。
git filter-branch
如果您的媒体文件实际上不需要在Git中进行版本控制,请考虑使用git filter-branch
将其从存储库中删除。您可以在official Linux Kernel Git documentation for git filter-branch
和"The Nuclear Option: filter-branch"的free online Pro Git book处详细了解此选项。
GitHub makes this suggestion for dealing with large media files:
二进制媒体文件与Git的搭配并不是很好。对于这些文件,通常最好使用专门为您使用的服务而设计的服务。
对于视频和音乐等大型媒体文件,您应自行托管文件或使用Vimeo或Youtube等服务。
对于像PSD和3D模型这样的设计文件,像Dropbox这样的服务通常效果很好。这就是GitHub的设计师用来保持同步的东西;只有最终的图像资产才会被提交到我们的存储库中。
您可以在其他Stack Overflow问题中了解有关Git和版本化二进制文件的更多信息: