完全备份一个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,所以没有简单的副本会有问题。
一切都包含在.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
这里有两个选项:
-
你可以直接获取git repo目录的tar ,因为它拥有服务器上repo的全部内容。 在备份的时候有人可能正在做回购的事情。
-
下面的命令会给你一个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