Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在运行的生产服务器上初始化git并从远程repo进行更新_Git_Production Environment_Git Init - Fatal编程技术网

如何在运行的生产服务器上初始化git并从远程repo进行更新

如何在运行的生产服务器上初始化git并从远程repo进行更新,git,production-environment,git-init,Git,Production Environment,Git Init,我刚刚加入了一个项目,这个项目有一个运行了一年没有git的实时服务器。在过去,所有者/开发人员在没有版本跟踪的情况下亲自进行所有代码更新。然后他开始使用git(带有gitlab帐户)来跟踪他的更改(但不是将更改推送到服务器上)。所以在我到达之前,经理向gitlab添加了一个站点副本,并开始创建问题和功能分支。现在,他想开始使用git将代码更改推送到生产服务器。我们有两个问题: live production server文件夹不包含git repo 启动gitlab repo后,live pro

我刚刚加入了一个项目,这个项目有一个运行了一年没有git的实时服务器。在过去,所有者/开发人员在没有版本跟踪的情况下亲自进行所有代码更新。然后他开始使用git(带有gitlab帐户)来跟踪他的更改(但不是将更改推送到服务器上)。所以在我到达之前,经理向gitlab添加了一个站点副本,并开始创建问题和功能分支。现在,他想开始使用git将代码更改推送到生产服务器。我们有两个问题:

  • live production server文件夹不包含git repo
  • 启动gitlab repo后,live production server文件夹中的一些文件被修改以修复bug
  • 我需要将git repo添加到live production server文件夹,合并live和remote上的所有代码,并在不破坏站点的情况下推送生产分支(具有所有功能和生产bug修复)

    以下是我目前的程序:

  • 创建live production server文件夹的副本
  • 将.gitignore文件从gitlab复制到新文件夹
  • 在新文件夹中初始化git repo
  • 设置一个指向gitlab的遥控器
  • 添加并提交并将该分支推送到gitlab
  • 比较文件(在gitlab中的推送分支和主开发分支之间)
  • 在gitlab中创建一个包含所有修复和更新的最新生产分支
  • 将.gitignore文件复制到live production server文件夹
  • 在live production server文件夹中初始化git repo
  • 添加并提交
  • 检查并跟踪gitlab中的生产分支
  • 请告诉我这个程序是否有效,如果我需要更改,请告诉我。此外,我如何最大限度地减少中断生产的变化?我应该注意哪些潜在问题

    在这种情况下,让实时站点在一天中停机一两分钟并不是问题,但我仍然希望有一些好的指示,以尽量减少停机时间

    编辑================


    我目前正在进行第5步。我创建复制文件夹是为了限制在live production server文件夹上执行的操作。我想限制对live production server文件夹的更改,以降低意外破坏生产站点的风险。在最终确定的方向中,可能不需要创建额外的文件夹。(或者是吗?

    您不需要在步骤9中再次初始化。您只需要从Gitlab签出正确的分支(在第7行中创建的分支)

    另外,可能不需要8,因为您已经从repo获得了一个有效的gitignore文件。步骤10和11也不是必需的,因为在步骤9中已经签出了正确的版本

    编辑:对于您推送到生产中的内容,始终使用发布分支可能会很好

    请参阅此链接,以了解要使用的良好分支策略:

    但是步骤9和步骤3是在不同的文件夹上完成的。第3步是在站点的副本上完成的,只是为了确保不会出错。由于您已经在第7步之前将源代码完全合并到Gitlab中,因此您只需克隆它,就可以将最新版本签出到该目录中,其中包含所有.git条目,历史记录等等。只是要澄清一下:Git init在Git中的存储库的生命周期中只运行一次。完成后,您可以在多台计算机或目录中克隆存储库。很抱歉给您造成混乱。第一个git repo(步骤3)未在方向的live production server文件夹中创建。也许你是建议我不需要这个额外的文件夹?另外,live production server文件夹中有许多未跟踪的文件(实际上有几个GIG)。是的,我知道您的计划是将代码从生产服务器复制到一个新文件夹中,您将在这个新文件夹中运行git init(步骤3),然后设置git remote。您还将添加所有文件,提交文件并将其推送到Gitlab。因此,在这一步之后,您只需要将gitlab repo克隆到生产服务器的文件夹中。无需在生产文件夹中再次运行git init。