理解 Git:最新推送在生产服务器上不可见
Understanding Git: Latest push is not visible on production server
我自学了 git 个存储库,想创建以下符合我需要的环境。
- 我在本地机器上编码
- 我有一个 bitbucket 存储库,我在那里更新所有内容(据我所知,我的来源)
- 我想通过 ssh 将代码推送到生产服务器
一切都按预期工作,我在推送到生产服务器时只有一个问题。我总是需要通过 shell 登录服务器,以便在前端看到最新推送的提交之前进行硬重置。看起来最后的推送在生产端根本没有被“激活”。
我有以下工作流程来设置我的环境:
- 我使用 git init
在我的生产服务器上创建了一个 git 存储库
- 我使用 git clone ssh://urlToRepo
在我的本地机器上克隆了 repo
- 我在 bitbucket 上创建了一个新的 repo
- 在我的本地机器上,我 link 带有 git 远程添加源的 bitbucket 回购 URL
- 我处理我的代码,提交并将其推送到两个遥控器。
- 在 bitbucket 上,提交按预期可见。
- 在生产服务器上,更改未激活。我需要做一个 git reset --hard 让它们可见。
为了让我的推送在生产端被接受,我还需要配置 git config receive.denyCurrentBranch ignore。我试过 git init --bare 想可能是一个裸仓库,我没有这个问题。不幸的是,服务器上根本没有显示任何文件。
如您所见,我可能没有完全理解这个概念。有人知道如何帮助和提示我正确的方向吗?
已经谢谢了。
正如@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 pull
。 的答案应该可以帮助您通过 'pull from repo to server' 实现代码部署。
我推荐 'push to server' 方法,但 'pull from repo to server' 也有效。这真的取决于你。
我自学了 git 个存储库,想创建以下符合我需要的环境。
- 我在本地机器上编码
- 我有一个 bitbucket 存储库,我在那里更新所有内容(据我所知,我的来源)
- 我想通过 ssh 将代码推送到生产服务器
一切都按预期工作,我在推送到生产服务器时只有一个问题。我总是需要通过 shell 登录服务器,以便在前端看到最新推送的提交之前进行硬重置。看起来最后的推送在生产端根本没有被“激活”。
我有以下工作流程来设置我的环境:
- 我使用 git init 在我的生产服务器上创建了一个 git 存储库
- 我使用 git clone ssh://urlToRepo 在我的本地机器上克隆了 repo
- 我在 bitbucket 上创建了一个新的 repo
- 在我的本地机器上,我 link 带有 git 远程添加源的 bitbucket 回购 URL
- 我处理我的代码,提交并将其推送到两个遥控器。
- 在 bitbucket 上,提交按预期可见。
- 在生产服务器上,更改未激活。我需要做一个 git reset --hard 让它们可见。
为了让我的推送在生产端被接受,我还需要配置 git config receive.denyCurrentBranch ignore。我试过 git init --bare 想可能是一个裸仓库,我没有这个问题。不幸的是,服务器上根本没有显示任何文件。
如您所见,我可能没有完全理解这个概念。有人知道如何帮助和提示我正确的方向吗?
已经谢谢了。
正如@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 pull
。
我推荐 'push to server' 方法,但 'pull from repo to server' 也有效。这真的取决于你。