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

对我来说很容易,我不是一个命令行的人…我们在我们的Windowsnetworking(使用msysgit&GitExtensions)设置了GIT。 我们每个都有我们自己的仓库,我们推送到我们的一台服务器上的远程“裸”仓库。 都好。

我试图在服务器上设置一个预定的作业,这将从C驱动器克隆到一个外部驱动器(在F) – 有一些困难得到这个工作。 我可以很容易地在Git bash中做到这一点,但是我不知道如何将它保存到一个batch file中,然后我可以对其进行处理。

我到目前为止:

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

我也尝试了以下的最后一行:

 GIT CLONE C:\GIT\Repo1\ 

但是这也行不通…我有点难住,希望得到一些帮助。 C驱动器包含我们裸存储库和F驱动器是我们外部驱动器,我们每天换出…


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

需要将这些function集中在一起工作,以便在各种驱动器交换时(例如,如果外部驱动器上不存在克隆存储库,然后只是区别其他方面),那么它很高兴,但这应该是可行的。 谢谢大家。

Solutions Collecting From Web of "GIT克隆到外部驱动器进行备份"

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

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

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

 $ 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/ 

用户Offby增加 :从版本1.5.4,“git远程添加”采取“ – 镜像”选项,这将节省您不必“git配置remote.origin.mirror真”,并从必须通过 – 镜像到“混帐推”。

因为git命令有点奇怪,你必须使用call来执行批处理文件中的任何git命令:

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

你总是可以安排bash.exe mybashbackupscript.sh

无论如何,在Windows中:

 rmdir F:\GitClone /s /q mkdir -p F:\GitClone\Repo1 copy c:\GIT\Repo1\.git F:\GitClone\Repo1\.git 

git clone实际上并没有做任何更奇特的事情。

编辑:正如别人指出的那样,最好是创建一个新的备份仓库,然后将其拖入/取出。 你将避免与.git任何accesing问题:)

对不起,我不能评论帖子,但我也在考虑复制.git文件,但是如果.git文件在一个pull文件中被复制,会发生什么?

无论如何,为什么复制整个东西,你可以不时获取三角洲?

备份初始化:(在F:\ GitClone \ Repo1空)

 git init git add remote origin /c/GIT/Repo1 

那么你的“增量备份脚本”就可以做到:

 cd /f/GitClone/Repo1 git fetch origin 

为什么你一直删除克隆? 当您只想复制文件时克隆现有存储库有什么意义?

只需在外部驱动器上创建回购(使用git clone 一次 ),然后定期运行git pull

问题解决了:

 h: (flash drive) cd \ mkdir YourProject cd YourProject git init git remote add origin git@github.com:user/YourProject.git git remote add local C:\w\YourProject git pull origin master git push local master