【问题标题】:Understanding Git: Latest push is not visible on production server了解 Git:最新推送在生产服务器上不可见
【发布时间】:2020-12-04 09:09:42
【问题描述】:

我自学使用 git 存储库,希望创建以下满足我需求的环境。

  • 我在本地机器上编码
  • 我有一个 bitbucket 存储库,用于更新所有内容(据我所知,我的来源)
  • 我想通过 ssh 将代码推送到生产服务器

一切都按预期工作,我在推送到生产服务器时只有一个问题。在最新推送的提交在前端可见之前,我总是需要通过 shell 登录到服务器以进行硬重置。看起来最后一次推送根本没有在生产端“激活”。

我有以下工作流程来设置我的环境:

  1. 我使用 git init 在生产服务器上创建了一个 git 存储库
  2. 我使用 git clone ssh://urlToRepo 在本地机器上克隆了 repo
  3. 我在 bitbucket 上创建了一个新仓库
  4. 在我的本地计算机上,我将 bitbucket 存储库与 git remote add origin URL 链接起来
  5. 我处理我的代码,提交并将其推送到两个遥控器。
  6. 在 bitbucket 上,提交按预期可见。
  7. 在生产服务器上,更改未激活。我需要执行 git reset --hard 让它们可见。

为了让我的推送在生产端被接受,我还需要配置 git config receive.denyCurrentBranch ignore。我试过 git init --bare 想可能是一个裸仓库,我没有这个问题。不幸的是,服务器上根本没有显示任何文件。

如您所见,我可能没有完全理解这个概念。有人知道如何帮助并提示我正确的方向吗?

已经谢谢了。

【问题讨论】:

  • Git 不是部署工具。它只跟踪开发历史,您需要使用不同的工具部署到生产环境。

标签: git bitbucket bitbucket-pipelines git-workflow


【解决方案1】:

正如@choroba 所指出的,Git 不是部署工具。您可以使用它来做到这一点,但通常使用 ci/cd 服务之类的东西更有意义。

您提到您正在使用 Bitbucket,它提供了一个名为 Bitbucket Pipelines 的功能,可让您在推送到某些分支或分支模式时运行 bash 脚本。大多数 Git-Hosting 提供商都提供这样的解决方案。例如:GitHub Actions 和 GitLab CI。

因此,为了将最新代码推送到服务器,您需要编写一个 Bitbucket 管道配置,通过 ssh 和 rsync 将代码从存储库复制到您的服务器。

Here is an article 描述了如何在 Bitbucket Piplelines 中使用 ssh(密钥)。

另一种解决方案可能是您的服务器上有一个 bash 脚本,该脚本可以通过 ssh 触发,运行类似:git pullHere is a link 的答案应该可以帮助您通过“从仓库拉到服务器”来部署代码。

我建议使用“推送到服务器”方法,但“从存储库拉到服务器”也可以。这完全取决于你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多