Git:localhost>远程开发>远程生产

Ale*_*sev 4 git

我是Git的新手,我不明白如何实现以下目标.有2个服务器:

  1. 本地主机
  2. Linode.com VPS

基本上,我想:

  1. 在我的localhost上写新代码.
  2. 将新代码推送到可以测试它的VPS上的开发版本(在dev.domain.com或类似的东西.)
  3. 如果新代码正常工作,请将其推送到同一VPS上的生产版本.应该可以在domain.com上访问.

什么是实现我想要的正确方法?

kan*_*aka 5

有几种方法可以做到这一点.如果你能够在你的VPS上运行ssh服务器,那么这很简单.

在localhost上的git存储库中,您将设置两个git遥控器.它们将具有相同的主机但具有不同的路径(一个远程用于dev路径,一个用于prod路径).

git remote add prod ssh://[user@]host.xz[:port]/path/to/prod/repo.git/
git remote add dev ssh://[user@]host.xz[:port]/path/to/dev/repo.git/
Run Code Online (Sandbox Code Playgroud)

如果您设置ssh公钥/私钥访问,那么您不必每次都输入密码.

一旦您将所需的更改提交到localhost上的repo中,那么您将执行此操作以将它们推送到开发环境:

git push dev    # remote named dev points to dev repository
Run Code Online (Sandbox Code Playgroud)

验证完成后,您可以将它们推送到生产环境(从您在localhost上的仓库):

git push prod   # remote named prod points to prod repository
Run Code Online (Sandbox Code Playgroud)

如果要在推送到dev和prod(除了你想要应用的修补程序之间)之间更改localhost上的git repo,那么有很多方法可以解决这个问题:

  • 分支或标记在推送到开发之前并推送而不是你的主分支(由于其他原因建议无论如何).
  • 在localhost上制作一份repo的副本并推送它.
  • 在进行更改之前分支并推送分支而不是主分支.
  • 登录VPS,然后从dev推送(或拉动)到prod repo

这不包括你的一半选择,但也许足以让你思考.