当前位置:  开发笔记 > 编程语言 > 正文

如何在Git中实现部署分支

如何解决《如何在Git中实现部署分支》经验,为你挑选了2个好方法。

我正在使用git进行PHP项目,我认为它非常方便.如果我让它发挥作用,有一件事情会很棒.

我创建了一个分支,用于部署.它有一些差异,如不同的配置文件和文档.

我不能只是忽略它们,因为它们将留在两个分支中,而我希望它们在两个分支中保持不同.

问题是,当我合并分支时,那些意图不同的文件也会被合并.

有没有方便的方法来完成这样的事情?这通常是怎么做的?



1> VonC..:

我不确定Git是否会以这种方式使用.

首先是一个快速的Linus建议,总是"丰富多彩"和信息丰富;)

Git的非常根本跟踪项目的状态,而不是文件的状态.这意味着你非常不能尝试"合并文件".在git中这是一个毫无意义的操作,事实上,任何允许它的SCM都注定要成为sh t()的一部分.

(*)我不是说那只是因为git没有这样做.它比那更基础.一旦你开始进行每个文件的分支和合并,你基本上搞砸了自己,你将永远无法再将这个项目作为一个"整个项目" - 你不再拥有一个定义明确的历史记录是整个项目的历史.


那里.

那说,你可以:

管理那些配置/ doc文件一个单独的git子项目(注意:这里讨论了子模块的使用)

或记录部分合并(对我们不想合并的文件使用"我们的"策略),然后 - 命名它.


此线程中的其他解决方案涉及在部署服务器上处理"特定于服务器"的分支

Development        Deployment

#origin/master:
x--x               $ git clone

                   # master
                   x--x

                   $ git checkout -b deployment origin/master

                   x--x
                       \ 
                        -- #deployment

                   $ .... #makes changes for config files
                          #or other specific deployment files

                   x--x
                       \
                        --d1--d2 # no need to push that branch ever.

#new developments
x--x--x--x

                   $ git pull --rebase #pull origin/master and 
                                       #replay current branch on top of it
                   x--x--x--x
                             \
                              --d1'--d2' #SHA1 rewritten in deployment branch
                                         #not important since this branch 
                                         #is not pushed (published)



2> arbales..:

这对我有用,我只进行了一些小配置更改(配置文件中有3行).

    从GitHub或您保存的任何地方克隆您的存储库.到您希望部署的位置.

    git checkout -b deployment origin/master.

    进行更改(如果您愿意,可以推送它们).

    每当您的主服务器(或您从中进行部署的任何分支)都要进行部署时,只需简单地进行部署即可git pull --rebase.

这是一个简单的解决方案,它肯定对我有用,我不能说话,或者不是这就像其他人所说的那样"shi*t",但它对我们的目的当然非常有用.


在第二个想法,我会避免这样做,因为它是不必要的复杂.而是在.conf文件中使用SetEvn来设置影响/确定配置的环境变量.例如,在我的开发服务器上,我的网站的DATABASE_URL ='mysql:root @ localhost/bla',在生产时它可能是DATABASE_URL ='mysql:app @ localhost/appdb'.
推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有