如何在本地使用git并推送到远程服务器

时间:2013-02-15 19:10:43

标签: git drupal

我想使用git来管理我的开发,集成测试和生产环境。我环顾四周,但似乎无法找到一个简单的解释(例如Git - pushing to remote repository并不完全这样做)。关于我想做什么的一个非常简短的解释:

  • 我在笔记本电脑上掌握了我的代码库,因为这是我完成大部分工作的地方。
  • 我在1and1上托管我的网站。在那里,我设置了两个站点,生产站点和集成测试站点。
  • 我想设置git,所以我可以在笔记本电脑上安装两个遥控器,比如siteprod和siteint。
  • 每当我想要测试一个分支时,我想从笔记本电脑中推出它,比如使用“git push siteprod newproductionversion”(我相信你明白了)。

通过使用git --init(注意没有--bare!)并使用ssh设置遥控器,在1and1上创建了一个存储库,我已经取得了一些成就。但是我必须将receive.denyCurrentBranch设置为忽略,一旦我推动,我必须通过登录1and1服务器来签出分支。我必须为集成环境重复一遍。

这看起来非常笨拙,但我确信我的用例并不常见。这样做有明智的方法吗?

2 个答案:

答案 0 :(得分:6)

如果您具有与服务器的ssh连接,则可以将git remote直接添加到服务器上的存储库。类似的东西:

git add remote production sshUser@example.com:/path/to/repo/.git

然后,部署,

git push production branch

也就是说,您可能不应该从git存储库提供生产代码。更好的方法是在您的Web根目录外部设置 存储库,并使用post-receive挂钩将代码复制到Web根目录。这似乎在这里概述: Deploy a project using Git push

答案 1 :(得分:1)

Git不是(最初)用于同步工作副本,而是用于Git的提交/分支/ refs /等的存储库。

你想做什么我会叫远程结账。还有数百种其他方法可以做。我有两个想法:当你设置一个ssh-connection时,大工作就完成了:

1)使用git和ssh

git push origin my_branch
ssh user@server "(cd remote-dir-where-your-repo-is; git checkout -f my_branch;)"

2)使用rsync

rsync -av . ssh://user@server/dir --exclude=.git