GitHub:如何将所有代码手动部署到生产服务器

时间:2017-07-03 15:11:02

标签: git github deployment git-clone

我有一台运行在其上的开发和生产环境的Ruby on Rails服务器。我最近基于开发代码创建了一个远程GitHub存储库,现在我想将此代码部署到Production。

我认为使用git clone会是这样做的,但这会给出:

fatal: destination path already exists and is not an empty directory.

目标目录确实存在且非空,因为我的(当前是管理的)生产代码存在于那里。我认为使用git clone可以让我将我的主代码写入我的生产环境。我不理解的是什么?

2 个答案:

答案 0 :(得分:1)

基于评论的其他信息:

有些评论澄清说,生产目录无法像我最初建议的那样删除。此外,生产目录中的代码与开发目录中的代码相同。这表明直接在生产目录中创建一个git repo,然后将其克隆为开发文件夹。

在生产机器上:

$ cd <production directory>
$ git init
$ git add .
$ git commit

在开发机器上:

$ cd <parent of development directory>
$ rm -rf <development directory>
$ git clone <URL to the production directory>

注意我假设当前的开发回购不包含您要保留的任何历史记录。如果是,您可以将新的生产仓库添加为远程并合并历史记录。

在开发机器上:

$ cd <development directory>
$ git remote add prod <URL to production directory>
$ git checkout master
$ git pull prod master

原始回答:

您应该删除生产目录并将其重新创建为git仓库。然后将您的开发回购连接到生产仓库。

执行此操作的一种方法就是完成克隆:

$ cd <parent of production directory>
$ rm -rf <production directory>
$ git clone <development directory or URL> <production directory>

如果开发目录和生产目录位于不同的计算机上,这可能很困难,具体取决于网络配置。即使您这样做,也需要将开发目录连接到生产目录以推送更新:

$ git remote add prod <production directory or URL>

因为无论如何你都需要这样做,你可以从一开始就这样做。在生产服务器上。首先创建一个空的生产仓库:

$ cd <parent of production directory>
$ rm -rf <production directory>
$ mkdir <production directory>
$ cd <production directory>
$ git init

现在将开发代码推送到生产部门:

$ cd <development directory>
$ git remote add prod <production directory or URL>
$ git push prod master

请注意,生产代码的位置大多无关紧要。您使用此位置配置所谓的“远程”。这意味着目录不需要具有相同的名称。

答案 1 :(得分:0)

方法1: 您的git存储库与包含&#34; unmanaged&#34;的文件夹具有相同的名称。生产代码。重命名现有文件夹,然后克隆。

OR

方法2:在另一个目录中执行克隆。

OR

方法3:您可以做的最好是指定目标目录:

getNext()

OR

方法4:正如您所提到的,它是相同的代码,您可以将现有的git存储库附加为给定的here,并在下面显示的示例中添加:

git clone <Repo> <DestinationDirectory>

编辑1:添加方法4。

编辑2:修改了git指令,以便在将新代码组合到远程git仓库中的代码时,不会产生任何冲突。但正如评论所暗示的那样,他们最终会出现错误,因此将其删除。

编辑3:更改回方法4的原始版本。