27

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

我可以将目录与我git init在机器之间创建的内容同步吗?

我的笔记本电脑上有一个存储库,将其从那里移开的唯一方法是 scp/rsync 到远程主机,我可以从中再次下载它。我可以在这些主机之间同步完整的目录结构吗?

4

6 回答 6

32

有几种可能:

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

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

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

  • 或者您可以在其他机器上创建git bundlersyncit 或scpit ,然后从 bundle 中克隆或获取。

于 2009-09-09T16:39:45.077 回答
11

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

于 2009-09-09T07:17:45.887 回答
6

您可以毫无问题地进行 rsync,但如果您声明了一些使用机器本地主机名的远程设备(即仅存储在 /etc/hosts 中),那么这些显然无法工作。

但是,您不使用 git 本身来同步内容有什么原因吗?

于 2009-09-09T07:21:49.623 回答
5

是的,您可以,但是您应该使用裸存储库来执行此操作,如此线程中所示。

$ 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 协议

请参阅Jeff King ( )的提交 0d0bac6(2016 年 1 月 30 日) 。(由Junio C Hamano 合并 -- --提交 9f03176中,2016 年 2 月 17 日)peff
gitster

事实证明,git clone当源存储库长时间打包引用时,“” over rsync 传输已被破坏,没有人注意到或抱怨它。

来自Jeff King ( peff)的Commit 0d0bac6包含所有详细信息。

于 2009-09-09T07:20:07.347 回答
1

rsync的,可以使用.gitdir 并将导致存储库的完整克隆。

于 2009-09-09T07:18:10.237 回答
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

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

于 2017-06-06T08:44:22.300 回答