我想使用git来管理我的开发,集成测试和生产环境。我环顾四周,但似乎无法找到一个简单的解释(例如Git - pushing to remote repository并不完全这样做)。关于我想做什么的一个非常简短的解释:
通过使用git --init(注意没有--bare!)并使用ssh设置遥控器,在1and1上创建了一个存储库,我已经取得了一些成就。但是我必须将receive.denyCurrentBranch设置为忽略,一旦我推动,我必须通过登录1and1服务器来签出分支。我必须为集成环境重复一遍。
这看起来非常笨拙,但我确信我的用例并不常见。这样做有明智的方法吗?
答案 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