提交没有本地的远程Git仓库?

时间:2013-07-26 07:50:58

标签: xcode git bitbucket

我的问题很简单:

我有一个带有本地Git仓库的项目,我已将其推送到Bitbucket。我想要做的是删除本地仓库并将我的项目提交到远程仓库,这样我的硬盘上就没有双尺寸项目。

对此有什么好的解决方案吗?

更多详情

我担心.git文件夹可能会耗尽我的硬盘。创建我的本地Git仓库会保留所有文件,最后我创建了一个两倍大的项目。该应用程序处理媒体文件...它没有Git 500 MB。

2 个答案:

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

我想指出一些事情:

  1. Git只能提交本地回购。
  2. Git压缩其repo中的文件。
  3. Git不适合版本化二进制文件。
  4. 有关完整说明,请参阅下面的每个部分。

    Git只能提交到本地仓库

    在Git中我无法直接向远程存储库提交,而无需先通过本地存储库。这不是Git的工作方式。如果你想提交,我认为你只能使用本地存储库。

    Git压缩其repo中的文件

    .git目录 下的文件已压缩 ,因此.git目录下的Git仓库可能比您的工作副本小得多checkout,特别是如果它只是文本而不是二进制文件(更多关于二进制文件)。在工作中,我使用的Git仓库大约为300 MB,但工作副本大约为2.5 GB,因此相比实际的仓库本身要小得多。

    Git的压缩设置

    你可以configure Git to use different compression levels

      

    core.compression

         
        

    整数-1..9,表示默认的压缩级别。 -1是zlib的默认值。 0表示没有压缩,1..9是各种速度/尺寸权衡,9最慢。如果设置,则会为其他压缩变量提供默认值,例如core.loosecompressionpack.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的更多信息。

    Git不适合版本化二进制文件

    最后,原始海报制作this comment

      好吧......应用正在处理媒体文件......它是500mb没有git

    Git 不适合版本化二进制文件 (如媒体文件,如图片,视频,音频剪辑等),因为Git无法保留文字像对文本文件一样对它们进行更改的差异增量,它实际上必须在每次对其进行更改时保留每个版本的二进制文件。

    因此,如果您有一个名为logo.jpg的1 MB图片文件,并对其进行了一些小改动,Git将不得不再次存储整个logo.jpg文件,再添加1 MB你的存储库。

    解决方案1:使用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处详细了解此选项。

    解决方案2:使用第三方服务替代媒体文件

    GitHub makes this suggestion for dealing with large media files

      

    二进制媒体文件与Git的搭配并不是很好。对于这些文件,通常最好使用专门为您使用的服务而设计的服务。

         

    对于视频和音乐等大型媒体文件,您应自行托管文件或使用Vimeo或Youtube等服务。

         

    对于像PSD和3D模型这样的设计文件,像Dropbox这样的服务通常效果很好。这就是GitHub的设计师用来保持同步的东西;只有最终的图像资产才会被提交到我们的存储库中。

    有关Git和版本化二进制文件的更多信息

    您可以在其他Stack Overflow问题中了解有关Git和版本化二进制文件的更多信息:

    1. Managing large binary files with git
    2. git with large files