繁体   English   中英

如何使用Git部署项目

[英]How to deploy a project using Git

我找到了一个解决方案,但我觉得必须有一个更简单的部署方式,使用Git。 解决方案就是这样

  1. 在本地使用Git开发应用程序
  2. 设置Git服务器
    • 将本地存储库本地克隆为裸存储库
    • 将裸存储库复制到远程服务器
    • 将裸存储库设置为远程存储库
  3. 将存储库从裸存储库克隆到服务器(以便具有工作目录的存储库)
  4. 通过推送本地提交的更改来更新裸存储库。
  5. 通过从裸仓库中提取更改来更新工作目录

这不是一个简单的解决方案,可能有更好的方法来使用Git进行部署。 我试图在服务器上单独使用裸存储库,并将git配置文件中的工作树变量设置为其他目录,但它不起作用:在第一次检出后,当我更新裸仓库并尝试查看更改,似乎一切正常,但工作目录中没有任何反应。 然后我决定克隆裸存储库,因此克隆的repo有一个工作目录,它可以通过git pull更新(这将来自裸存储库的更改作为其原始远程存储库)。

此解决方案的最大优点是您可以修复服务器上的代码,提交这些更改,更新裸存储库,然后您只需更新本地存储库。 另一个优点是您可以从裸仓库中克隆项目,如果有权访问服务器,则更多参与者可以参与开发。

你知道一种具有上述优点的简单方法吗?

我要向你描述我要做的是什么,所以它可能对你有用。 我还将提供一些细节,以便将来可以帮助新的企业。

我有一个服务器,我喜欢运行一些个人实验,我用git以我发现的最简单的方式进行部署。 它是使用git附带的钩子和很少的shell脚本完成的。

我们去:

首先:初始化服务器中的裸存储库。 与普通git存储库的不同之处在于缺少工作树(项目文件和常见的东西)。 您只需拥有存储库树。

git init --bare 

如果你看一下裸露的结构,你会看到这样的东西:

› git init --bare
Initialized empty Git repository in /home/git/mysite/
› ls
branches  config  description  HEAD  hooks  info  objects  refs

如果仔细观察hooks文件夹,你会发现一些有趣的东西:

daniel at heavens-empire into /home/git/mysite/hooks  
› ls
applypatch-msg.sample  post-update.sample     pre-commit.sample      
pre-push.sample        update.sample          commit-msg.sample      
pre-applypatch.sample  prepare-commit-msg.sample  pre-rebase.sample

每个文件都是可以在某些事件后触发的脚本示例。 今天我们正在观看收到后的活动(它没有出现在这个版本中......我不知道为什么)。 它发生在我们推送到裸存储库时。 你可以创造它并在其中加入一些贝壳之美:

#shows file content
daniel at heavens-empire into /home/git/mysite/hooks$ cat post-receive  

#!/bin/sh

GIT_WORK_TREE=/home/www/site git checkout -f

GIT_WORK_TREE将确定我推送的工作树的文件的位置。 这就像你在一个文件夹中有repo并说树在另一个文件夹中。

我已经从我的玩具服务器复制了那些脚本,所以我可能会说他们应该和你合作,改变适当的工作树变量。

在我的本地存储库中,我只是将该裸文件夹添加为远程仓库 我会用ssh来简单化。 在这种情况下,请确保您用于访问的用户对工作树文件夹具有适当的权限:

git remote add mygitserver daniel@heavensempire.com:/home/git/mysite

每次推送时,您的本地git都会发送提交。 当服务器git repo接收并接受它们时,它将触发该接收后脚本。 设置工作树并给出权限后,它将在应用程序运行的文件夹上进行简单检查。

我希望这对你有用,也可能对别人有用。 Personaly我避免在服务器上编辑东西。 如果您发现在服务器中反映完整的repo很有用,您还可以使用post-receive进行克隆/推送,并在另一个repo中为您结账。 就像是:

cd /home/mysite
git pull repo/folder masterOrOther

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM