2009-02-08 47 views
4

Git newbie here。是否有办法同步两个存储库,以便当前签出的文件将成为所有更改的最新版本?使用git与服务器同步文件

我有这样的:

Desktop  Server 
-------  ------ 
Change_X  Change_Y 

而且我想进入一些“神奇”命令,然后更改合并

Desktop  Server 
-------  ------ 
Change_X  Change_X 
Change_Y  Change_Y 

其中的一个问题是,桌面是一台NAT后面的Windows机器,我想避免在它上面设置sshd。基本上我想要使用从桌面到服务器的ssh执行所有操作。

这似乎是应该用git做的小事,但我无法弄清楚如何去做。

(我想git push会做的伎俩,但事实证明,它不更改当前已签出的分支,所以从桌面上所做的更改不会到达服务器)

有一种用git来做到这一点的方法,还是我离开了轨道?

解决方案:我从here下载更新之后的脚本,并把它放在钩目录的服务器上,而现在git push使服务器的变化进行更新。所以基本上“魔命令”解析为:

git pull server:scripts/ master 
git push server:scripts/ 

scripts是我同步的文件夹)

回答

3

应该能够创建一个post-commit钩子,将在变化更新服务器的工作副本(我和mercurial完全一样,所以我认为它也可以和git一起使用)。所以推后,工作副本将自动更新。

创建post-commit挂钩,将运行git up或任何等同于git的命令。
对不起,我不知道还有什么要说的。
upd:在official git faq有一些解释。

1

其中一个问题是,桌面是一台NAT机器后面的Windows机器,我想避免必须在其上设置sshd。基本上我想要使用从桌面到服务器的ssh执行所有操作。

不是直接回答你的问题,但如果你是在NAT后面,就越容易做的事情是运行的,而不是一个sshd服务器使用腻子或东西反向SSH隧道。

ssh -R3333:127.0.0.1:9418 <user>@<server> 

现在,<server>的端口3333连接将被转发到您的NAT-ED机的git的端口。