首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何备份本地Git仓库?

如何备份本地Git仓库?
EN

Stack Overflow用户
提问于 2010-01-25 06:40:59
回答 4查看 134.5K关注 0票数 163

我在一个相对较小的项目中使用git,我发现压缩.git目录的内容可能是备份该项目的好方法。但这有点奇怪,因为当我恢复时,我需要做的第一件事是git reset --hard

用这种方式备份git repo有什么问题吗?另外,有没有更好的方法(例如,可移植的git格式或类似的格式?)?

EN

回答 4

Stack Overflow用户

发布于 2010-02-01 21:39:55

只是把这个留在这里供我自己参考。

我的捆绑包脚本git-backup如下所示

代码语言:javascript
复制
#!/usr/bin/env ruby
if __FILE__ == $0
        bundle_name = ARGV[0] if (ARGV[0])
        bundle_name = `pwd`.split('/').last.chomp if bundle_name.nil? 
        bundle_name += ".git.bundle"
        puts "Backing up to bundle #{bundle_name}"
        `git bundle create /data/Dropbox/backup/git-repos/#{bundle_name} --all`
end

有时我使用git backup,有时我使用git backup different-name,它为我提供了所需的大多数可能性。

票数 35
EN

Stack Overflow用户

发布于 2015-07-18 00:39:15

这个问题的两个答案都是正确的,但我仍然缺少一个完整的、简短的解决方案来将Github存储库备份到本地文件中。这里提供了gist,您可以随意派生或调整您的需求。

backup.sh:

代码语言:javascript
复制
#!/bin/bash
# Backup the repositories indicated in the command line
# Example:
# bin/backup user1/repo1 user1/repo2
set -e
for i in $@; do
  FILENAME=$(echo $i | sed 's/\//-/g')
  echo "== Backing up $i to $FILENAME.bak"
  git clone git@github.com:$i $FILENAME.git --mirror
  cd "$FILENAME.git"
  git bundle create ../$FILENAME.bak --all
  cd ..
  rm -rf $i.git
  echo "== Repository saved as $FILENAME.bak"
done

restore.sh:

代码语言:javascript
复制
#!/bin/bash
# Restore the repository indicated in the command line
# Example:
# bin/restore filename.bak
set -e

FOLDER_NAME=$(echo $1 | sed 's/.bak//')
git clone --bare $1 $FOLDER_NAME.git
票数 9
EN

Stack Overflow用户

发布于 2020-06-02 20:08:06

在涉水通过上面的文字墙后,我找到了一个简单的官方方法,它会让你认为没有任何文字。

使用以下命令创建完整的捆绑包:

代码语言:javascript
复制
$ git bundle create <filename> --all

使用以下命令恢复它:

代码语言:javascript
复制
$ git clone <filename> <folder>

此操作是原子AFAIK。有关详细信息,请查看official docs

关于“压缩包”:git包是压缩的,与.git文件夹大小相比小得出奇。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2129214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档