这个问题可能是基于我对.gits和git存储库的作用缺乏了解,但是:
我可以使用机器之间使用git init
创建的内容来同步dir吗?
我的笔记本电脑上有一个存储库,唯一可以将它从远程主机上取下来的scp / rsync,我可以从中再次下载它。我可以在这些主机之间rsync完整的目录结构吗?
答案 0 :(得分:28)
有几种可能性:
您可以rsync
.git
存储库(甚至整个存储库以及工作目录),前提是您在rsync
期间在存储库中没有任何活动(与使用rsync://
协议相同的免责声明)。
您可以使用不推荐的 rsync
协议进行克隆或获取(其中存储库网址/位置如下所示:“rsync://host.xz/path/to/repo.git/
”)。请注意,不推荐使用此协议,因为如果存储库中存在任何活动,则可能会损坏克隆(或获取)。
此外,正如我所听到的那样,自2007年以来,它在包装裁判的存在下无法正常工作,直到最近才有人注意到。它会(确实)在Git 2.8中消失。
或者您可以在其他计算机上创建git bundle,rsync
或scp
,然后克隆或从捆绑中获取。
答案 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 0d0bac6见Jeff King (peff
)(2016年1月30日)
(Junio C Hamano -- gitster
--在2016年2月17日commit 9f03176合并)
来自Commit 0d0bac6的事实证明,“
git clone
”在rsync传输时已被破坏 源存储库已经打包了很长时间的引用,并且 没人注意也没有抱怨。
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
我知道,这是非常沉重和愚蠢的..请让我知道有更好的方法来做到这一点..