首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Git中实现部署分支

如何在Git中实现部署分支
EN

Stack Overflow用户
提问于 2009-01-28 14:13:38
回答 11查看 16.6K关注 0票数 22

我正在为一个PHP项目使用git,我认为它真的很方便。如果我能让它工作,有一件事会很棒。

我已经创建了一个分支,用于部署。它有一些不同之处,比如不同的配置文件和文档。

我不能忽略它们,因为这样它们就会留在两个分支中,而我想让它们在两个分支中保持不同。

问题是,当我合并分支时,那些本应不同的文件也会被合并。

有没有什么方便的方法来完成这样的事情?这通常是如何完成的?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-01-28 14:23:05

2021年2月更新: Git本身仍然不是一个很好的选择,但GitHub Action environment could help

2009年:我不确定Git是否就是这样使用的。

首先是一个快速的Linus advice,总是“多姿多彩”和信息量大;)

Git从根本上跟踪项目状态,而不是文件状态。这意味着你不能尝试“合并一个文件”。这在git中是一个没有意义的操作,事实上,任何允许它的SCM都注定是一小块sh*t (*)。

(*)我并不是因为git不能做到这一点就这么说。它远比这更基础。一旦你开始做每个文件的分支和合并,你基本上就搞砸了自己,你再也不能把这个项目作为一个“整个项目”来工作了--你不再有一个明确定义的历史,实际上就是整个项目的历史。

那里。

也就是说,你可以:

使用单独的GIT子项目来管理这些配置/文档文件(注意:use of submodules has been discussed here)

  • or记录部分合并(对我们不想合并的文件使用“”策略),然后--对其进行修改。

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

代码语言:javascript
复制
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)
票数 12
EN

Stack Overflow用户

发布于 2009-01-29 21:32:55

我做了一些愚蠢的把戏,比如:

让应用程序向repository

  • Have读取文件config

  • Add config.developmentconfig.production,但不是config。您的部署脚本不仅可以克隆存储库,还可以克隆cp config.production config

这有什么意义吗?

它对我来说没问题。

票数 5
EN

Stack Overflow用户

发布于 2009-07-31 23:00:01

这对我来说很有效,而且我只做了很小的配置更改就可以部署(配置文件中有3行)。

  1. 从GitHub或您保存存储库的任何位置克隆存储库。运行git checkout -b deployment origin/master.
  2. Make您的更改(如果您like).
  3. Whenever您的主分支(或进行部署的任何分支)有您想要部署的更改,则推送它们),只需git pull --rebase.

这是一个简单的解决方案,它对我来说肯定是有效的,我不知道它是不是像其他人建议的那样是"shi*t“,但它对我们的目的肯定是非常有用的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/487753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档