繁体   English   中英

Git和网站开发工作流程

[英]Git and website development workflow

我的询问是具体的,并且我知道他们可能是主观的; 我将不胜感激。

这是我在git之前所做的事情:

  • 我经营一个PHP / MYSQL网站
  • 我在本地开发并在WAMP上进行测试
  • 我FTP到暂存站点dev.mywebsite.com
  • 对所有更改感到满意之后,我便通过FTP进入了实时站点

当我决定开始使用Git时:

  • 我在托管服务器上初始化了一个裸仓库
  • 创建了一个接收后挂钩,以部署到dev.mywebsite.com
  • 我将dev.mywebsite.com存储库克隆到了本地开发机器上
  • 我测试代码->提交->推送到远程(开发站点)

这是我的问题:

1)我需要一些文件以使其在本地与远程上保持不同(这些文件主要是配置文件)。 我正在对这些文件使用--assume-unchanged。 但是,我读到做'git reset'会撤销这些操作,所以我的第一个问题是:-从本地推送到远程时,有没有更好的方法可以从不更改配置文件?

2)我的工作流程以我推送到开发站点而结束。 我不确定如何从那里继续,以及如何以最有效且无风险的方式将我的代码部署到实时网站中。

* 3)一个额外的问题:我应该将github / bitbucket / etc ..集成到我的工作流程中吗?

谢谢

您的方法仅适用于非常小的开发团队和小型项目,而无需复杂的部署。 但:

1)本地与远程

我通常将配置文件的远程版本保留在存储库中,并使用未跟踪的文件在本地覆盖它们。 然后,配置加载器搜索覆盖,但如果没有覆盖,则不会失败。

2)开发+生产

一个相当简单的方法是保留一个分支用于开发(dev)和一个分支用于生产(master)。 实际上,或者您想要的任意多个分支。 在挂钩中,您将获得推送分支的名称,并确定将新代码复制到的位置(在最简单的情况下)。

更新后挂钩可能看起来像:

for arg in "$@"
do
  if [ "$arg" == "refs/heads/master" ]
  then
    DEST="/path/to/production"
    git --work-tree=$DEST checkout -f
  elif [ "$arg" == "refs/heads/dev" ]
  then
    DEST="/path/to/dev"
    git --work-tree=$DEST checkout -f
  fi
done

3)外部存储库

如果您想备份或与全世界共享,是的,您应该:)

暂无
暂无

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

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