【问题标题】:How to use git locally and push to remote server如何在本地使用 git 并推送到远程服务器
【发布时间】:2013-02-15 19:10:42
【问题描述】:

我想使用 git 来管理我的开发、集成测试和生产环境。我环顾四周,但似乎找不到一个简单的解释(例如Git - pushing to remote repository 并没有做到这一点)。对我想做的事情的一个非常简短的解释:

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

通过使用 git --init(注意没有 --bare!)在 1and1 上创建存储库并使用 ssh 设置远程,我已经实现了一些接近。但是我必须将 receive.denyCurrentBranch 设置为忽略,一旦我推送,我必须通过登录到 1and1 服务器来签出分支。对于集成环境,我必须重复一遍。

这看起来很笨拙,但我确信我的用例一点也不稀奇。有没有明智的做法?

【问题讨论】:

    标签: git drupal


    【解决方案1】:

    如果你有 ssh 连接到服务器,你可以直接添加一个 git 远程到服务器上的存储库。比如:

    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

    【讨论】:

    • 谢谢。您向我指出了我最终在这里找到完美解决方案的方向:blog.woodylabs.com/2012/01/…(它对 1and1 有点具体,但引用了不是的原始想法)。现在我的问题是我如何也推送子模块! :o)
    【解决方案2】:

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

    你想做的事,我称之为远程结账。还有数百种其他方法可以做。我有两个想法:当你设置了一个 ssh 连接时,大工作就完成了:

    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
    

    【讨论】:

      猜你喜欢
      • 2018-01-28
      • 2020-03-11
      • 2011-12-29
      • 2021-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-09
      • 2020-04-21
      相关资源
      最近更新 更多