首先感谢您抽出时间阅读这个问题。
我目前正在研究哪种Git工作流程最适合我所在公司的网站开发。网上有不同的指南,但它们大多是概念性的。如果我的实施方式错误,请告诉我:
1。概念
从概念上讲,将有4层,开发,集成,升级和生产。开发层存储在本地,集成是通过Git的帮助完成的,生产层直接位于public_html,而暂存层是为了在发布可用的受保护目录__dev / staging(或者更好,__ dev / [branch_name]? )。
2。文件夹结构(分段和生产层)
第3。我的本地副本(开发和集成层)中的Git设置
git remote add origin ssh://path_to_project.git
git branch staging
这样我就有了两个分支来开始,掌握和分期。
当我这样做时
git push origin master
应该更新网站的在线版本,而无需我连接到网站。当我做的时候
git push origin [branchname]
__ dev / [branchname]应该自动更新。
以上所有内容都可以通过git hooks完成。这种自动化而不是ssh连接和拉动的原因是允许更快的开发(否则如果它需要比ftp更多的努力,那么:/。你同意吗?)
4。钩
这是我很困惑的地方。
我想到的是这两种风格中的一种:
一个。克隆并复制
当我推送到网站时,钩子会将裸仓库克隆到临时目录并将其复制到public_html或__dev / branch,具体取决于我发送的分支。
湾重置并拉动
当我推送到网站时,钩子将检查public_html或__dev / branch中是否已存在.git目录
如果找不到,请cd到该目录并git init,然后git pull。
如果找到,请cd到该目录并git reset --head然后git pull
使用installatron或softaculous进行应用安装
有时我喜欢从installatron安装Web应用程序,并将其用作工作基础。不幸的是,在安装完成后没有自动推送到git的钩子,所以我必须连接到ssh并执行:
git add .
git commit -a -m "installed xxx app"
git push origin master
然后将其拉入我的本地存储库。
结论和问题
您如何看待我的工作流程?我需要改进吗?分支的安排好吗?哪种味道更好4.a.或4.b.,还是还有另一个?
谢谢。
答案 0 :(得分:1)
4a和4b都是常用的。
我更喜欢4b,因为您可以在生产文件夹中找到您的仓库的所有历史记录。您可以在以下网址查看更多信息:
关于分支,从简单开始,并在需要时添加
但是不要忘记,使用分布式 VCS,您可以推送到中间仓库,该仓库可以通知job scheduler like Jenkins of a new commit,以便运行一些测试。
如果这些测试通过,然后你可以推送到prod repo。