2017-08-28 38 views
0

我的任务是从SVN迁移到Git,但我不确定如何在当前的设置下执行此操作。以下是目前SVN存储库的工作原理:在生产环境中从SVN迁移到Git

我们有一个开发服务器和一台生产服务器,它们都连接到单个SVN存储库。我们在本地进行更改并将其保存到开发服务器。每当我们对这些改变感到满意,我们将它们提交到开发服务器的svn仓库(svn commit ...),然后在生产服务器上更新它们(svn update ...)

我们现在想要使用Git,但我不确定如何反映相同或相似的行为。我最初想到的是拥有一个包含两个分支(dev和master)的单个Git存储库。唯一的问题是,开发和生产服务器不同步;在开发服务器上有很多文件发生变化,反之亦然。我如何能最好地解决这个困境?

编辑:我经常看到这一点。请指定降低投票的原因,以便我可以改进我的答案。

+0

如果您已将版本控制从部署过程中分离出来(即不是仅在生产服务器上使用实时工作副本),那将更容易。 – crashmstr

+0

@crashmstr那会很理想。尽管如此,我仍然使用旧版本的开发工具。 – driima

+0

即使只有批处理文件或shell脚本将内容复制到服务器,您也希望此时将您的部署放入不同的进程。这允许你使用不同的部署,功能分支等。 – crashmstr

回答

2

Git和SVN都是版本控制系统,但它们不能以完全相同的方式工作。他们有不同的工作流程。

Git是一个分布式版本控制系统,看到https://en.wikipedia.org/wiki/Distributed_version_control

我建议先从单个共享Git仓库有一个分支,每个开发者的工作站上的本地存储库。通过克隆共享库来创建开发人员的存储库。然后你必须习惯于在你的工作流中增加一个额外的步骤:在SVN上,你曾经只是'提交',在Git上你必须'提交',然后'推送'到共享库。

然后从这里阅读SVN页面上的Git:https://git-scm.com/course/svn.html 这将帮助您从SVN的角度理解Git。

+0

在每个开发人员的工作空间上有一个本地回购是我们正在讨论的内容。尽管如此,我们希望有能力为不同的目的设置不同的环境。例如,开发环境和生产环境。我们还希望能够添加更多环境,例如临时环境。在这种情况下,是否像提交并推送到开发分支那样简单,然后将其转换为分段分支和/或主(活)分支? – driima

+0

您必须在每个开发人员的工作区上拥有本地回购,这是分布式版本控制工作的唯一方式。对于不同的环境,您将使用不同的分支,正确。在这种情况下,你会提交然后推送到开发分支,然后*从开发合并*到另一个分支。 –