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

标签 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/

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

GIT CLONE C:\GIT\Repo1\

但这也不起作用...我有点难过,希望能得到一些帮助。 C 驱动器包含我们的裸存储库,F 驱动器是我们每天更换的外部驱动器...


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

需要将它们组合在一起工作,这样当各种驱动器被换入和换出时它会很高兴(即如果外部驱动器上不存在则克隆一个存储库,否则只提取差异),但这应该是可行的。感谢大家。

最佳答案

请注意,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

Tada,你准备好了。因此,您的脚本需要做的就是发出 git push backup。完全没有必要反复丢弃旧备份。

替代方案是您可以使用 rsync为你做这一切:

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

User Offby adds:自版本 1.5.4 起,“git remote add”采用“--mirror”选项,这使你们都不必“git config remote.origin.mirror true ”,并且不必将 --mirror 传递给“git push”。

关于windows - GIT 克隆到外部驱动器进行备份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1887364/

相关文章:

windows - poolmon负数是什么意思?

javascript - node webkit - 文档说屏幕可以工作,但让它工作变得不可能

git - 如何 Git 获取远程存储库并将其锚定到指定的提交?

database - 从数据库表增量导出记录

sql-server - 如何直接从SQL Server备份文件中读取元数据?

windows - 如何使用 bat 文件创建注册表项

node.js - 有没有办法防止Windows命令行中的env变量扩展百分比?

git - 使用git备份配置文件

git - 如何将 "dereference"字符串转换为 git sha1 哈希?

windows - 尝试在 git 中设置一个新的编辑器