使用git同步文件与服务器

4

我是一名Git新手。有没有一种方法可以同步两个仓库,使当前检出的文件成为所有更改的最新版本?

我的情况是这样的:

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

我希望能够输入一些“神奇”的命令,然后将更改合并。

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

问题之一是桌面是一个Windows机器,位于NAT后面,我希望避免在其上设置sshd。基本上,我想全部使用从桌面到服务器的ssh完成。

这似乎应该使用git轻松完成,但我无法弄清楚如何做到这一点。

(我认为git push会起作用,但事实证明它不会更改当前已检出的分支,因此来自桌面的更改不会到达服务器)

是否有一种方法可以使用git来解决这个问题,或者我走错了方向?

解决方案:我从这里下载了post-update脚本,并将其放在服务器的hooks目录中,现在git push会导致服务器更新更改。所以基本上“魔术命令”的解决方案是:

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

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

2个回答

3

应该可以创建一个提交后钩子,以更新服务器上的工作副本(我在使用mercurial时也是这样做的,所以我认为在git中也是可能的)。因此,在推送后,工作副本将自动更新。

创建一个提交后钩子,运行git up或任何等效于git的命令。
很抱歉我不知道还能说什么了。
更新:在官方git faq中有一些解释。


1
一个问题是桌面机器位于NAT后面的Windows机器,我希望避免在其上设置sshd。基本上,我想通过从桌面机器到服务器的ssh完成所有操作。关于你的问题没有直接答案,但如果你在NAT后面,更简单的方法是使用Putty或其他工具运行反向SSH隧道,而不是使用sshd服务器。
ssh -R3333:127.0.0.1:9418 <user>@<server>

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接