对我来说很容易,我不是一个命令行的人…我们在我们的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集中在一起工作,以便在各种驱动器交换时(例如,如果外部驱动器上不存在克隆存储库,然后只是区别其他方面),那么它很高兴,但这应该是可行的。 谢谢大家。
请注意,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