1

我想使用 git 来管理我的开发、集成测试和生产环境。我环顾四周,但似乎无法找到一个简单的解释(例如Git - 推送到远程存储库并不能完全做到这一点)。我想要做的一个非常简短的解释:

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

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

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

4

2 回答 2

6

如果你有到服务器的 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

于 2013-02-15T19:56:14.977 回答
1

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
于 2013-02-15T19:21:29.417 回答