完全备份一个git回购?

有一个简单的方法来备份包括所有分支和标签的整个git仓库吗?

有什么关于它的克隆呢?

git clone other/repo.git 

每个存储库都是其远程的备份。

 git bundle 

我喜欢这种方法,因为它只导致一个文件,更容易复制。
看到ProGit:一点欢乐 。
另请参阅“ 如何向某人发送git存储库? ”,其中的命令

 git bundle create /tmp/foo-all --all 

详细说明:

git bundle将只打包由git show-ref显示的引用 :这包括头部,标签和远程头部。
目的地所使用的基础是非常重要的。
在谨慎的方面犯错是可以的,导致包文件包含已经在目的地的对象,因为在目的地解包时忽略这些对象。


为了使用这个bundle,你可以克隆它,指定一个不存在的文件夹(在任何git仓库之外):

 git clone /tmp/foo-all newFolder 

扩大一些其他答案,这是我所做的:

设置回购: git clone --mirror user@server:/url-to-repo.git

然后,当你想刷新备份:克隆位置的git remote update

这将备份所有分支和标签,包括后来添加的新分支和标签,尽pipe值得注意的是被删除的分支不会从克隆中删除(这对于备份来说可能是件好事)。

这是primefaces,所以没有简单的副本会有问题。

请参阅http://www.garron.me/en/bits/backup-git-bare-repo.html

一切都包含在.git目录中。 只要你像任何文件一样支持你的项目。

使用git包或克隆

复制git目录不是一个好的解决scheme,因为它不是primefaces的。 如果你有一个需要很长时间才能复制的大型资源库,而且有人推送到你的资料库,这会影响你的备份。 克隆或制作一个包不会有这个问题。

你可以用最小存储大小的git-copy备份git仓库。

 git copy /path/to/project /backup/project.repo.backup 

然后你可以用git clone来恢复你的项目

 git clone /backup/project.repo.backup project 

这里有两个选项:

  1. 你可以直接获取git repo目录的tar ,因为它拥有服务器上repo的全部内容。 在备份的时候有人可能正在做回购的事情。

  2. 下面的命令会给你一个repo的简单克隆(就像它在服务器上一样),然后你可以把你克隆的位置的tar放在一个没有问题的地方。

     git clone --bare {your backup local repo} {new location where you want to clone} 
 cd /path/to/backupdir/ git clone /path/to/repo cd /path/to/repo git remote add backup /path/to/backupdir git push --set-upstream backup master 

这将创build一个备份并进行设置,以便您可以执行git push来更新备份,可能是您想要执行的操作。 只要确保/ path / to / backupdir和/ path / to / repo至less是不同的硬盘驱动器,否则这样做没有多大意义。

据我所知,你可以做一个你的回购目录的副本,就是这样!

 cp -r project project-backup