GIT克隆到外部驱动器进行备份

Pad*_*ddy 18 windows git backup

我们在Windows网络中设置了GIT(使用msysgit和GitExtensions).我们每个人都拥有自己的存储库,我们将其推送到其中一台服务器上的远程"裸"存储库.都好.

我正在尝试在服务器上设置一个预定的作业,它将一个存储库从C驱动器克隆到一个外部驱动器(在F上) - 在使这个工作时遇到一些困难.我可以相对容易地在GIT bash中执行此操作,但我不确定如何将其保存到批处理文件中,然后我可以将其保存.

到目前为止我所拥有的:

rmdir F:\GitClone /s /q
mkdir F:\GitClone
mkdir F:\GitClone\Repo1
CD /D F:\GitClone\Repo1\
GIT CLONE /c/GIT/Repo1/
Run Code Online (Sandbox Code Playgroud)

我还在最后一行尝试了以下内容:

GIT CLONE C:\GIT\Repo1\
Run Code Online (Sandbox Code Playgroud)

但这也不起作用......我有点难过,并会感激一些帮助.C驱动器包含我们的裸存储库,而F驱动器是我们每天更换的外部驱动器...


这里有几个答案非常有用,谢谢.我得到的答案可能是这些的组合,因此指出如何运行bash脚本以及如何编写pull/push脚本.

需要将这些组合在一起工作,以便在各种驱动器交换进出时很高兴(例如,如果外部驱动器上不存在,则克隆存储库,否则只会拉出差异),但这应该是可行的.谢谢大家.

nes*_*983 28

请注意,git本身非常适合将所需的更改复制到克隆的存储库.

如果要定期更新repo的副本,请执行以下操作:创建裸存储库作为备份存储库,然后重复推送所有新更改(无需删除旧备份).

好的,让我们从创建您的回购开始吧

$ cd /tmp
$ mkdir myrepo && cd myrepo
$ touch hi && git add . && git commit -m "bla" 
Run Code Online (Sandbox Code Playgroud)

所以,这是你的存储库.现在我们创建克隆:

$ cd /tmp
$ mkdir backup && cd backup 
$ git --bare init
Initialized empty Git repository in /tmp/backup/
Run Code Online (Sandbox Code Playgroud)

现在,让我们设置你的repo进行常规备份......

$ cd /tmp/myrepo
$ git remote add backup /tmp/backup
$ git config remote.backup.mirror true
Run Code Online (Sandbox Code Playgroud)

然后将所有内容复制到备份中:

$ git push backup
Counting objects: 3, done.
Writing objects: 100% (3/3), 206 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To /tmp/backup
 * °new branch§      master -> master
Run Code Online (Sandbox Code Playgroud)

看看它是否有效:

$ cd /tmp/backup
$ git log
commit d027b125166ff3a5be2d7f7416893a012f218f82
Author: Niko Schwarz <niko.schwarzàgmail.com>
Date:   Fri Dec 11 12:24:03 2009 +0100

    hi
Run Code Online (Sandbox Code Playgroud)

田田,你定了.因此,您需要做的所有脚本都是要发布git push backup.完全不需要反复丢弃旧备份.

替代方案是您可以让rsync为您完成所有操作:

rsync -av rsync://rsync.samba.org/ftp/unpacked/rsync /dest/dir/
Run Code Online (Sandbox Code Playgroud)

User Offby补充说:从版本1.5.4开始,"git remote add"采用"--mirror"选项,这样既可以节省"git config remote.origin.mirror true",也不必通过--mirror "git push".

  • 从版本1.5.4开始,"git remote add"采用"--mirror"选项,这样既可以节省"git config remote.origin.mirror true",也不必将--mirror传递给"git push" ". (3认同)