【问题标题】:Simplify Git procedure简化 Git 程序
【发布时间】:2011-10-22 09:23:02
【问题描述】:

我使用 Git 在我的生产系统中部署我的项目。我遵循的程序是:

  • 我第一次克隆存储库时,在配置文件中进行更改(在任何生产服务器中都不同),然后创建一个名为“pro”的分支来保留这些更改。生产服务器始终在“pro”分支中工作。
  • 然后,当有更改并且我想更新我的服务器时,我会执行一个批处理文件,使之(或多或少):

    git checkout master
    git pull
    git checkout pro
    git rebase master
    

我确信 git 有一种更简单的方法来做到这一点,但我不知道如何(也许可以从另一个分支更新一个分支)。只是出于好奇和了解有关 Git 的更多信息。

【问题讨论】:

    标签: git


    【解决方案1】:

    我会推荐一种不同的方法,因为它并不适用于所有环境(dev、UAT、prod...)。

    为什么不使用 content filter 和:

    • 版本化模板配置文件
    • 几个配置值(包括一个“prod_values”文件)
    • 一个版本脚本(称为“smudge”脚本)能够识别其执行环境(产品或非产品)并生成正确的(未版本化的)最终配置文件

    您将在正确的生产目录中推送到带有post-receive hook checkout'ing your project 的裸仓库。

    由于此项目中声明了内容过滤器,smudge 脚​​本将自动(结帐时)创建正确的配置文件。

    【讨论】:

    • 只是一个小提示 - OP 的程序不会重写 master,只是 pro,假设它不是公开的,这可能无关紧要。
    • @Mark:对,我已经解决了使用内容过滤器的主要原因。
    【解决方案2】:

    应该可以工作(pro

    git fetch --all
    git rebase origin/master
    

    但是,我认为 4-liner 没有任何问题 ;)

    【讨论】:

      猜你喜欢
      • 2019-10-20
      • 1970-01-01
      • 2010-10-10
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 1970-01-01
      相关资源
      最近更新 更多