Git + 部署到生产环境

3
我对Git还比较新,想知道在部署到生产环境时的最佳实践是什么?我有一个主分支,它始终具有生产环境代码的最新版本。当我进入生产环境(目前我是手动进行),我键入git pull并获得最新版本。但它试图合并代码,有时会创建冲突等问题。是否有一种方法可以强制让它按照主分支中的内容进行操作?
我尝试了很多相关资料,包括: Best solutions to deploy from git to production? http://posheika.net/?p=136

1
你可能想看看我在这里学到的关于如何安全地将git项目部署到远程Web服务器而不暴露你的repo给Web服务器的内容:http://stackoverflow.com/a/18941021/470749 - Ryan
2个回答

2
尝试使用git fetch origingit reset --hard whatever_deployment_branch_you_use代替pull操作。这样可以避免仓库尝试合并代码,从而避免服务器上的冲突。请注意保留HTML标签。

0
一种简单可靠的方法是创建一个名为master的分支,所有开发都在这个分支上进行。如果您想更准确地反映分支的目的,可以选择将此分支重命名为development
然后,您需要另一个名为production的分支,它始终反映当前正在生产环境中运行的内容。每当您想要部署到生产环境时,您需要检出production分支并运行git merge master。您还可以在master中的提交SHA上应用标签,以便更容易地查看您部署的时间点。
通过这种方式,您可以在开发环境中解决所有合并冲突,在生产环境中只需运行git pull即可获取来自production的最新内容。 这里提供了一种更高级(可能更复杂)的替代方案。如果您有多个开发人员和/或需要更复杂的发布周期,请使用此方案。

问题在于我一直在执行 git pull,但它会尝试合并分支并产生冲突。 - KVISH
听起来好像是因为您的生产服务器上有未提交的更改,Frost在这方面给出了最好的建议。如果您曾经直接在生产环境中进行更改(通常不是一个好主意),请确保将它们提交并合并回开发分支。 - jnevelson
我从未在生产环境中进行过更改...只是我在获取的分支中有很多更改。当我执行 git pull 时,它会尝试将这些更改与当前生产环境中的内容合并。 - KVISH
但是每次在 git pull 之前,我总是会执行 git reset --hard 以防万一。 - KVISH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接