我在一个相对较小的项目中使用git,我发现压缩.git目录的内容可能是备份该项目的好方法。但这有点奇怪,因为当我恢复时,我需要做的第一件事是git reset --hard。
用这种方式备份git repo有什么问题吗?另外,有没有更好的方法(例如,可移植的git格式或类似的格式?)?
发布于 2010-02-01 21:39:55
只是把这个留在这里供我自己参考。
我的捆绑包脚本git-backup如下所示
#!/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,它为我提供了所需的大多数可能性。
发布于 2015-07-18 00:39:15
这个问题的两个答案都是正确的,但我仍然缺少一个完整的、简短的解决方案来将Github存储库备份到本地文件中。这里提供了gist,您可以随意派生或调整您的需求。
backup.sh:
#!/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"
donerestore.sh:
#!/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发布于 2020-06-02 20:08:06
在涉水通过上面的文字墙后,我找到了一个简单的官方方法,它会让你认为没有任何文字。
使用以下命令创建完整的捆绑包:
$ git bundle create <filename> --all使用以下命令恢复它:
$ git clone <filename> <folder>此操作是原子AFAIK。有关详细信息,请查看official docs。
关于“压缩包”:git包是压缩的,与.git文件夹大小相比小得出奇。
https://stackoverflow.com/questions/2129214
复制相似问题