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
是我正在同步的文件夹)
答案 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端口。