rsync .git目录

时间:2009-09-09 07:14:59

标签: git rsync

这个问题可能是基于我对.gits和git存储库的作用缺乏了解,但是:

我可以使用机器之间使用git init创建的内容来同步dir吗?

我的笔记本电脑上有一个存储库,唯一可以将它从远程主机上取下来的scp / rsync,我可以从中再次下载它。我可以在这些主机之间rsync完整的目录结构吗?

6 个答案:

答案 0 :(得分:28)

有几种可能性:

  • 您可以rsync .git存储库(甚至整个存储库以及工作目录),前提是您在rsync期间在存储库中没有任何活动(与使用rsync://协议相同的免责声明)。

  • 您可以使用不推荐的 rsync协议进行克隆或获取(其中存储库网址/位置如下所示:“rsync://host.xz/path/to/repo.git/”)。请注意,不推荐使用此协议,因为如果存储库中存在任何活动,则可能会损坏克隆(或获取)。

    此外,正如我所听到的那样,自2007年以来,它在包装裁判的存在下无法正常工作,直到最近才有人注意到。它会(确实)在Git 2.8中消失。

  • 或者您可以在其他计算机上创建git bundlersyncscp,然后克隆或从捆绑中获取。

答案 1 :(得分:9)

是的,这是可能的。 IIRC,git使用相对方法。所以将它与另一台计算机同步是安全的。

答案 2 :(得分:6)

你可以没有任何问题进行rsync,但是如果你有一些用机器本地主机名声明的遥控器(即只存储在/ etc / hosts中),那么那些显然是行不通的。

但是,有什么理由不使用git本身来同步内容吗?

答案 3 :(得分:5)

是的,你可以,但你应该使用裸存储库,如this thread中所示。

$ git clone --bare ./projet projet.git
$ rsync -a --stats --delete ./projet.git/ votre.serveur:~/projets/projet.git/

注意:6年以后,git 2。8(2016年3月)将正式弃用并完全删除git rsync协议

commit 0d0bac6Jeff King (peff)(2016年1月30日) Junio C Hamano -- gitster --在2016年2月17日commit 9f03176合并)

  

事实证明,“git clone”在rsync传输时已被破坏   源存储库已经打包了很长时间的引用,并且   没人注意也没有抱怨。

来自Commit 0d0bac6

Jeff King (peff)包含所有详细信息。

答案 4 :(得分:1)

是的,rsync目的.git是可能的,并且会导致存储库的完全克隆。

答案 5 :(得分:1)

使用rsync备份.git是可能的,但有一个问题(至少对我自己) 它无法更新。下次你尝试再次rsync,你有大量的对象重命名..你不能删除那些.. 我不熟悉rsync或linux系统,我在rsync之前清除了.git备份。

这是:

> chmod -R 777 /path/of/your/backup/.git
> rm -fr /path/of/your/backup/.git
> rsync /path/of/your/origin/.git /path/of/your/backup/.git

我知道,这是非常沉重和愚蠢的..请让我知道有更好的方法来做到这一点..