如何备份git repo?


26

我打算从SVN切换到git。使用svn时,只要备份我的repo文件夹即可。但是git没有一个,那我该怎么办?

是否应该在单独的驱动器上创建克隆并通过从项目中提取来进行更新?然后,我可以刻录/存档此文件夹,它将包含所有历史记录?

这可能很明显,但是我想确定何时进行备份。我仍然假装有一个根存储库。


另请参阅:备份GitHub存储库(答案也适用于非GitHub git项目)
Martin Thoma 2014年

Answers:


14

您只需复制它。git 确实使用了一个repo文件夹,它只是从普通目录视图中隐藏了。(该文件夹.git在* nix系统上命名,因此只有在您使用时才会显示ls -a。我假设它在Windows中设置了“ hidden”属性,但我从未在Windows环境中使用过git,因此不确定在那里如何处理。)


我的行李箱中有几个项目文件,我忽略了。所以我真的可以复制吗?(我假设它的工作方式与linux相同)。那么克隆只是文件副本吗?我想我是否要提取所有我想要的数据在文件夹中。我检查了.git文件,但我的svn中继中有.svn文件,没有想到检查历史数据是否在其中

2
在Windows上,它仍然.git是“隐藏”属性。
grawity 2010年

1
@ acidzombie24:该.git目录包含整个存储库状态,包括历史记录。(这是“分布式”部分。)
grawity 2010年

5
@grawity:它更多的是“独立”部分,分布式部分是当您在独立存储库之间交换差异时:)
akira 2010年

19

akira答案是正确的,但是您可以添加--mirror来创建裸仓库(用于稍微小的备份)。

我们(几乎完全)使用以下策略:

git clone --mirror yourrepo backup.repo
tar cjf backup.repo.tar.bz2 backup.repo
scp backup.tar.bz2 ssh://somewhereelse

然后,要从备份中恢复:

tar xjf backup.repo.tar.bz2
git clone backup.repo yourrepo

2
这很有帮助,谢谢。如何使用备份的存储库还原工作树?
乔纳森·戴

10

我正在使用git bundle。要制作副本文件(一个备份文件),请执行以下操作:

git bundle create backup.bundle master

要使用分支主服务器还原存储库,只需克隆backup.bundle文件:

git clone backup.bundle -b master my-project

2

在其他地方创建一个新的克隆:

 % git clone yourepo somewhereelse

顺便说一句,git 一个repo文件夹,您可以在子目录下的工作副本中找到它.git。每个工作副本都具有该“回购文件夹”。


10
我不认为克隆可以作为备份,因为它不是精确的副本。克隆中至少缺少克隆的仓库的远程分支,而克隆的仓库的分支将在克隆中显示为远程分支。
sleske
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.