【问题标题】:How to do branching approach for multiple sites?如何为多个站点进行分支方法?
【发布时间】:2013-04-17 22:04:11
【问题描述】:

我是 git 新手,想知道这种分支方法是否适合我们打算做的事情。

我们将拥有三个站点

  • prod.websitename.com - 实时网站
  • sandbox.websitename.com - 可供客户使用的测试网站
  • dev.websitename.com - 用于在推送到实际站点之前开发和测试修补程序/功能的内部站点

我们打算做的是建立一个集中的存储库,为所有三个站点提供服务。该存储库将具有三个分支:master、sandbox 和 development

然后我们将检查分支以更改文件并为每个站点拉/推更改。

对于更改,开发将被推送到主分支和沙箱分支。 Sandbox 永远不会被推送到 master。

这样好吗?非常感谢任何建议。

非常感谢。

【问题讨论】:

  • 我已经编辑了我的答案以解决您最后一个问题的编辑。

标签: git repository-pattern


【解决方案1】:

只要你的主要单一仓库是一个bare repo,你可以推送到它,它就可以工作。

从那里,post-receive hook 可以触发相关结帐,具体取决于已推送的分支(请参阅“Writing a git post-receive hook to deal with a specific branch”)

#!/bin/bash
while read oldrev newrev refname
do
    branch=$(git rev-parse --symbolic --abbrev-ref $refname)
    if [ "master" == "$branch" ]; then
        # Do something
    fi
    if [ "sandbox" == "$branch" ]; then
        # Do something
    fi
    if [ "development" == "$branch" ]; then
        # Do something
    fi
done

对于更改,开发将被推送到主分支和沙箱分支。 Sandbox 永远不会被推送到 master。

这不是最佳做法:您应该将所需的内容从 dev 合并到 mastersandbox local 分支,然后将这些分支推送到唯一的远程仓库。
定期在 master 之上重新调整 dev 也是一个好主意。

【讨论】:

  • 非常感谢您的建议。顺便说一句,是的,这是一个裸仓库。我是唯一的提交者......并且看到您在另一个 GIT stackoverflow 帖子“A Rebase Workflow for GIT”上提供的链接。我想我会尝试遵循这个 rebase 的想法......“获取在 dev 中提交的所有更改并在 master 和 sandbox 中重播它们”,然后将每个分支推送到唯一的 repo 分支。这就是我理解你的解释的方式......至于钩子......对于我现在作为一个完全初学者来说,这只是压倒性的,真的无法理解它的价值。谢谢冯!
  • @Woppi 钩子是在正确位置自动结帐的关键,如stackoverflow.com/a/15930178/6309
猜你喜欢
  • 1970-01-01
  • 2021-07-04
  • 1970-01-01
  • 2015-12-18
  • 2017-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多