使用git与服务器同步文件

时间:2009-02-08 11:41:45

标签: git

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下载了更新后的脚本并将其放在服务器上的hooks目录中,现在git push会导致服务器更新变化。所以基本上“魔术命令”解决了:

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

scripts是我正在同步的文件夹)

2 个答案:

答案 0 :(得分:3)

应该可以创建一个post-commit钩子,它将在更改时更新服务器的工作副本(我对mercurial完全相同,所以我假设它也可以使用git)。所以推后,工作副本会自动更新。

创建post-commit钩子,它将运行git up或git的任何等效命令 对不起,我不知道还能说些什么 更新official git faq中有一些解释。

答案 1 :(得分:1)

  

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

不是你的问题的直接答案,但如果你是NAT的背后,更容易做的是使用Putty或其他东西而不是sshd服务器运行反向SSH隧道。

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

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