将git克隆到外部驱动器进行备份。

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

我们在windows网络中设置了git(使用msysgit&gitExtentions)。我们每个人都有自己的存储库,并且在我们的服务器上推送到一个远程的“裸”存储库。一切都很好。

我正试图在服务器上设置一个计划作业,它将把存储库从C驱动器克隆到外部驱动器(在F上)--这在使其工作时遇到了一些困难。我可以在gitbash中相对容易地完成这个任务,但是我不知道如何将它保存到一个批处理文件中,然后我就可以对其进行裁剪了。

到目前为止,我所拥有的是:

rmdir F:\GitClone /s /q
mkdir F:\GitClone
mkdir F:\GitClone\Repo1
CD /D F:\GitClone\Repo1\
GIT CLONE /c/GIT/Repo1/

对于最后一行,我还尝试了以下几点:

GIT CLONE C:\GIT\Repo1\

但这也没用..。我有点为难,希望能帮上忙。C驱动器包含我们的裸存储库,F驱动器是我们每天交换的外部驱动器.

需要将它们结合在一起才能工作,以便在各种驱动器被交换时感到高兴(例如,如果存储库在外部驱动器上不存在,则复制存储库,然后只在其他情况下提取差异),但这应该是可行的。感谢所有的人。

提问于
用户回答回答于

请注意,git本身非常擅长只将所需的更改复制到克隆的存储库。

如果希望定期更新回购文件的副本,请执行以下操作:创建一个裸存储库作为备份存储库,然后重复推送所有新的更改(不需要删除旧备份)。

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

$ cd /tmp
$ mkdir myrepo && cd myrepo
$ touch hi && git add . && git commit -m "bla" 

这是你的存储库。现在我们创建克隆:

$ cd /tmp
$ mkdir backup && cd backup 
$ git --bare init
Initialized empty Git repository in /tmp/backup/

现在,让我们为常规备份设置回购

$ cd /tmp/myrepo
$ git remote add backup /tmp/backup
$ git config remote.backup.mirror true

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

$ 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

看看它是否有效:

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

    hi

塔达你准备好了。因此,脚本所需要做的就是git push backup...。完全没有必要重复丢弃旧的备份。

另一种选择是你可以rsync为你做所有的事:

rsync -av rsync://rsync.samba.org/ftp/unpacked/rsync /dest/dir/

用户回答回答于

因为git命令有点奇怪,你必须使用call若要从批处理文件执行任何git命令,请执行以下操作:

rmdir F:\GitClone /s /q
mkdir F:\GitClone
CD /D F:\GitClone\
call GIT CLONE c/GIT/Repo1/

扫码关注云+社区