这个问题可能是基于我对 .gits 和 git 存储库的作用缺乏了解,但是:
我可以将目录与我git init
在机器之间创建的内容同步吗?
我的笔记本电脑上有一个存储库,将其从那里移开的唯一方法是 scp/rsync 到远程主机,我可以从中再次下载它。我可以在这些主机之间同步完整的目录结构吗?
有几种可能:
您可以只rsync
使用.git
存储库(甚至整个存储库以及工作目录),前提是您在 ing 期间在存储库中没有任何活动(与使用协议rsync
相同的免责声明)。rsync://
您可以使用已弃用 的协议进行克隆或获取rsync
(其中存储库 URL/位置如下所示:“ rsync://host.xz/path/to/repo.git/
”)。请注意,此协议已弃用,因为如果存储库中有任何活动,您可能会得到损坏的克隆(或获取)。
此外,正如我所听说的,自 2007 年以来,它在打包裁判的情况下无法正常工作,直到最近才有人注意到。它会(确实)在 Git 2.8 中消失。
或者您可以在其他机器上创建git bundle、rsync
it 或scp
it ,然后从 bundle 中克隆或获取。
是的,这是可能的。IIRC,git 使用相对的方法。因此,与另一台计算机同步是安全的。
您可以毫无问题地进行 rsync,但如果您声明了一些使用机器本地主机名的远程设备(即仅存储在 /etc/hosts 中),那么这些显然无法工作。
但是,您不使用 git 本身来同步内容有什么原因吗?
是的,您可以,但是您应该使用裸存储库来执行此操作,如此线程中所示。
$ 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包含所有详细信息。
是rsync
的,可以使用.git
dir 并将导致存储库的完整克隆。
使用 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
我知道,这是非常费力和愚蠢的..请让我知道有没有更好的方法来做到这一点..