【问题标题】:When creating a git repository that will be on the server, can I convert it to a bare repository? [duplicate]创建将在服务器上的 git 存储库时,我可以将其转换为裸存储库吗? [复制]
【发布时间】:2010-12-19 13:29:48
【问题描述】:

我已经创建了一个存储库。我可以让它成为一个裸类型还是重新开始?

【问题讨论】:

    标签: git git-bare git-non-bare-repository


    【解决方案1】:

    根据FAQ,从非裸到裸的转换可以通过两种方式完成。最好的:

    $ git clone --bare -l repo repo.git
    $ rm -rf repo
    

    从头开始创建一个裸仓库:

    $ mkdir repo.git
    $ cd repo.git
    $ git --bare init
    

    【讨论】:

    • 为什么第一种方法“更简单”?第二种方法似乎更安全更容易(您不需要重命名来获得与第一种方法相同的结果,只需git clone --bare repo 后跟rm -rf repo 就可以了)。
    • @Dan 是对的,我已将答案修改为仅包含安全的 简单方法。使用我的盒子上的 git 版本(1.5.6.5),我仍然需要在调用 git-clone 时提供目标目录。
    • git clone 不是将origin 远程设置为克隆的那个吗?在这种情况下,./repo,你rm'd...
    • FAQ 现在建议 git clone --bare -l-l 要求提供硬链接,这样可以加快速度。虽然请注意,使用 git clone 你会丢失配置设置/远程,所以要小心。
    • 请注意,使用 -l 进行硬链接将在克隆期间节省时间和空间并且如果您稍后删除非裸存储库,则可以防止您丢失数据,因为文件仍然链接由光秃秃的。当然,它只有在你的文件系统支持硬链接时才有效..
    【解决方案2】:

    只需将.git 文件夹从工作副本中移开即可。

    mv /var/git/repo/repo/.git /var/git/repos/repo.git
    

    你可能想跟进一个

    git config --bool core.bare true
    

    在那个存储库中,以防万一 git 抱怨某些事情不正确。

    【讨论】:

    • 如何从一开始就创建一个裸仓库?
    • --bare 标志传递给git: $ mkdir myrepo.git && cd myrepo.git && git --bare init
    • 或者只是git init --bare myrepo.git
    • 请注意,在 v1.5.6 ~Jun 08 中可以使用 git init --bare 替代 git --bare init
    【解决方案3】:
    git clone --bare repo
    

    这将为您提供一个名为 repo.git 的新裸版 repo。很简单,不是吗?

    【讨论】:

      猜你喜欢
      • 2015-11-05
      • 2011-01-13
      • 2010-10-06
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 2020-08-14
      • 2020-11-12
      • 1970-01-01
      相关资源
      最近更新 更多