Xcode 在没有本地Git回购的情况下提交远程Git回购?

Xcode 在没有本地Git回购的情况下提交远程Git回购?,xcode,git,bitbucket,Xcode,Git,Bitbucket,我的问题很简单: 我有一个本地Git回购的项目,我已经把它推到了。我试图做的是删除本地repo并将我的项目提交给远程repo,这样我的硬盘上就不会有两倍大小的项目 有什么好的解决办法吗 更多细节 我担心.git文件夹可能会耗尽我的硬盘。创建本地Git repo保留了所有文件,我最终创建了一个两倍大的项目。这个应用程序处理媒体文件…没有Git的话,它的容量是500 MB 创建本地git将保留所有文件 是的,git就是这么做的 每个对等方的代码库工作副本都是一个真正的存储库,而不是客户端同步的单个中

我的问题很简单:

我有一个本地Git回购的项目,我已经把它推到了。我试图做的是删除本地repo并将我的项目提交给远程repo,这样我的硬盘上就不会有两倍大小的项目

有什么好的解决办法吗

更多细节 我担心
.git
文件夹可能会耗尽我的硬盘。创建本地Git repo保留了所有文件,我最终创建了一个两倍大的项目。这个应用程序处理媒体文件…没有Git的话,它的容量是500 MB

创建本地git将保留所有文件

是的,git就是这么做的

每个对等方的代码库工作副本都是一个真正的存储库,而不是客户端同步的单个中央存储库。。。[这]导致了与集中式系统的一些重要区别

  • 每个工作副本有效地充当代码库及其更改历史的远程备份,防止数据丢失

  • 允许用户在未连接到网络时高效工作

  • 使大多数操作更快

  • 允许私人工作,因此用户可以使用他们的更改,即使是他们不想发布的早期草稿

  • 避免依赖一台物理机器作为单一故障点
至于你的“问题”


我很担心。git文件夹可能会耗尽我的硬盘


。考虑你的项目相对于Firefox的大小,然后准备为你的项目的Git储存库留出一个慷慨的地方。

< P>我想指出一些事情:

  • Git只能对本地回购进行提交
  • Git在其repo中压缩文件
  • Git不适合对二进制文件进行版本控制
  • 请参阅下面的每一节以了解完整的解释

    Git只能对本地回购进行提交 据我所知,在Git中,如果不先通过本地存储库,就无法直接提交到远程存储库。Git不是这样工作的。如果要进行提交,我认为只能使用本地存储库进行

    Git在其repo中压缩文件
    .git
    目录下的文件经过压缩,因此
    .git
    目录下的git repo可能比您的工作副本签出要小得多,特别是如果它只是全文而不是二进制文件(稍后将详细介绍二进制文件)。在工作中,我使用了一个大约300MB的Git回购,但是工作副本大约是2.5GB,所以实际的回购本身相比之下要小得多

    Git的压缩设置 你可以:

    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不适合对二进制文件进行版本控制 最后,原始海报制作:


    嗯…应用程序正在处理媒体文件。。。没有git是500兆

    Git不太适合对二进制文件(如媒体文件、图片、视频、音频剪辑等)进行版本控制,因为Git无法像对文本文件那样保留文本差异增量的更改,实际上每次对二进制文件进行更改时,它都必须保留二进制文件的完整版本

    因此,如果您有一个名为
    logo.jpg
    的1MB图片文件,并且您对其进行了一个小的更改,Git将不得不重新存储整个
    logo.jpg
    文件,并将另外1MB添加到存储库中

    解决方案1:使用git筛选器分支删除二进制文件

    如果您的媒体文件不需要在Git中进行版本控制,请考虑使用<代码> Git筛选器分支将它们从存储库中删除。有关此选项的更多信息,请访问的和

    解决方案2:将第三方服务用于媒体文件 :

    二进制媒体文件与Git的关系不太好。对于这些文件,通常最好使用专门为您使用的内容设计的服务

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

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

    更多关于Git和二进制文件版本控制的信息 你可以学我