如何使用git进行文件同步?

如何使用git进行文件同步?,git,synchronization,Git,Synchronization,我需要分布式文件同步。那么首先,有什么建议吗?我的想法是git,因为速度是个问题 虽然我的git知识还很初级,但以下是我所做的 我下载了便携式git(我在PC上,所以是msysgit)。 我在c:\root\git中放置了一个副本,在c:\root\git c:\client\git中放置了一个副本\ 我创建了一个目录c:\temp\root\content,并在其中创建了一些文件 c:\root\content>..\git\bin\git.exe init c:\root\conten

我需要分布式文件同步。那么首先,有什么建议吗?我的想法是git,因为速度是个问题

虽然我的git知识还很初级,但以下是我所做的

我下载了便携式git(我在PC上,所以是msysgit)。 我在c:\root\git中放置了一个副本,在c:\root\git c:\client\git中放置了一个副本\

我创建了一个目录c:\temp\root\content,并在其中创建了一些文件

c:\root\content>..\git\bin\git.exe init
c:\root\content>..\git\bin\git.exe add *
c:\root\content>..\git\bin\git.exe commit -f
c:\client>..\git\bin\git.exe clone file:///c:\root\content
这将创建一个内容目录,但它是空的!提交给root的文件不存在

而且,当我执行拉动命令时,我得到

C:\temp\client\content\content>c:\temp\client\git\bin\git.exe pull
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Your configuration specifies to merge the ref 'master' from the remote, but no such ref was fetched
很明显,我缺少一个概念。发生了什么事?

Git是一个很好的工具,可以在开发和生产之间同步源代码,原因之一是:它可以很容易地在生产中进行“热修复”,并将修复检查回树中。当然,您应该总是在开发或测试环境中复制bug并在那里修复它,但有时您不能

使用
git add.


提交前请使用
git status
,以确保已准备好提交相应的文件。

我刚刚尝试重现您的步骤

git commit-f
没有对我刚刚安装的1.6.5.1版本做任何操作。但是它会给你一个很长的错误信息

mkdir repo1 repo2
cd repo1
git init
( create files )
git add *
git commit -m "initial commit"
cd ..\repo2
git clone ..\repo1 .

我在
repo1
中创建的文件出现在
repo2

中,正如davr在评论中建议的那样,您可以尝试一下。通过,您可以进行n路同步。Unison不保存历史记录,因此如果您希望,您应该安排每天在一台主机上运行(最好是拥有最大、最可靠硬盘的主机)。这两种工具都有Windows二进制文件

我也考虑过使用Git进行文件同步,但是手动添加、提交、拉取和合并太多了(只有在使用工具时才有用)。在我的脑海中,我设计了一个小的Python或Ruby系统托盘流程,用于观察您的回购是否有变化,在回购不干净时对您唠叨不休,在一段时间没有变化后可以选择自动提交,还可以进行自动推/拉操作。解决合并冲突将使用现有工具完成

有关更多详细信息,请查看我刚刚写的关于个人文件同步的文章。

查看


Sparkeshare为您提供了类似于Dropbox的用户体验,只是它的底层同步引擎是git。这不是最稳定的东西,但您可以通过观察它的日志输出来了解它将实现无缝同步的git命令。一旦你学会了这些,你可以简单地制作你自己的稳定的同步脚本。我认为大多数SkksHeles的问题都在GUI中。

可能是另一个需要考虑的工具。

如果你只想同步,我会说RSyc是一个更好的工具选择。RSYNC对于单向同步是很好的,如果你想同步可能在两个地方发生变化的文件,我建议只看UNIONRSCONC是UNIX吗?乔治:我认为Windows(cwRsync)比Git更好地支持rsync。但更好的是,davr建议的Unison()的+1。您应该查找git附件,它正是基于这个原因创建的。是的,git附件正是基于这个原因创建的。