git - 使用分离分支进行部署

标签 git github continuous-integration

我要为客户设置自动构建环境。我想将 Git 存储库推送到客户端的构建服务器,但没有完整的 Git 历史记录。

我正在考虑使用 git checkout --orphan ci 的方法,但我不清楚如何使用这样的分支设置进行日常工作。

也许是这样的(?):

  • 新提交将在 master 上创建。
  • 一项功能在多次提交后完成。
  • ci 分支然后在 master 上重新建立/merge (快进)。
  • ci 分支已 check out 。
  • 最近的提交(尚未推送到任何服务器)被压缩以向客户端 stash 不必要的历史记录。
  • ci 分支被推送到构建服务器。
  • ...

这是一种有效的方法和/或是否存在更简单的方法?

最佳答案

一种简单的管理方法是:

  • master 上正常工作(或使用任何其他功能分支模型)。
  • 每当您完成一项功能并想将其推送到 CI 系统时,您:

    • git checkout ci
    • git merge --squash master 这会将 master 中的所有更改带到您的 ci 分支。
    • git commit 您将拥有一个预填充的提交消息,其中包含所有压缩的提交消息。然后您可以编辑此消息以反射(reflect)该功能的所有更改。
    • git push origin ci 将您的更改发送到 CI 系统。

那里有很多分支模型,但这应该足够简单并且可以满足您的需求。

希望对您有所帮助。

关于git - 使用分离分支进行部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11420729/

相关文章:

git - 修复 Git 中损坏的分支的最佳实践?

git - 如何创建依赖于托管在 gitlab 子组中的私有(private) go 包的 docker 镜像?

git - 如何在 github 上托管我的网站

git - 如何清理 GitHub pull 请求?

continuous-integration - Github 操作 - 工作流无法访问环境变量

windows - 在 TortoiseGit 中添加命令

Git 列出已修改但未暂存提交的相同文件?

php - 将现有网站转移到 git

continuous-integration - 防止 KeyVault 使用 Terraform 更新 secret

continuous-integration - CruiseControl.NET 中的队列优先级