Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.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的最佳实践_Git - Fatal编程技术网

在网站部署中使用git的最佳实践

在网站部署中使用git的最佳实践,git,Git,目前我正在一家公司实习五个月,我打算改变开发人员访问文件的方式,也就是git,而不是普通的ftp访问。git的一切都很好,直到现在,在使用了一个月之后,我对它的用法有点熟悉 这就是我现在的想法: 我们使用beanstalk作为一个repo宿主,它附带了一个部署功能,工作起来非常简单,所以这一部分已经涵盖。让我思考的部分是分支。我在考虑做一个名为“活”的分支,只是“主”。master将部署到开发网站(图片右上角),live分支将部署到live网站。此外,现场网站部署将是手动的,但主控应该是自动的

目前我正在一家公司实习五个月,我打算改变开发人员访问文件的方式,也就是git,而不是普通的ftp访问。git的一切都很好,直到现在,在使用了一个月之后,我对它的用法有点熟悉

这就是我现在的想法:

我们使用beanstalk作为一个repo宿主,它附带了一个部署功能,工作起来非常简单,所以这一部分已经涵盖。让我思考的部分是分支。我在考虑做一个名为“活”的分支,只是“主”。master将部署到开发网站(图片右上角),live分支将部署到live网站。此外,现场网站部署将是手动的,但主控应该是自动的,到目前为止,没有问题

当我想到一个对live网站进行小改动的场景时,事情就变得复杂了。比如说,我需要更改一些随机div的填充,我不想将带有半实现api的最新版本部署到实时网站,我只想部署一个小更改,这有可能吗

我现在看到的是在两个地方进行修复,首先拉动主分支并修复它,然后对活动分支执行相同的操作。但随着更大的变化,这将变得更加困难

而且,由于我们几乎所有的东西都使用Wordpress,所以大部分数据都存储在数据库中。这真的很好,因为我们只需要不时克隆实时数据库,我们就完成了。但当图像上传开始起作用时,事情变得非常糟糕。repo中会有一些图像(因为我们从一开始就没有使用git,它们是从完整的副本中出现的),而其他稍后添加的图像将只是坐在ftp目录中,假装它们在repo中

最好不要在git中包含缓存和介质之类的文件夹,或者只包含一些,或者只是偶尔更新一下

这几乎是我最大的两个问题

tl;dr:如何将小更改提交到过期的分支,而无需执行两次(也适用于master)。在git回购中,缓存/媒体文件的正常用途是什么?

我建议您仔细阅读

它解决了这个问题

基本上,您有以下分支:

  • 师父:你所说的“活”
  • 发展:这就是发展发生的地方
  • 特性:用于开发过程中的较大更改,这些更改太过中断,无法在正常的开发分支上执行
  • 修补程序:这是一个为您的小修补程序
重要的部分是哪个分支基于哪个其他分支:

  • 发展将分支的主人
  • 功能将从开发中分离出来
  • 修补程序将从主程序分支
开发的更改将在完全测试后合并到master中。合并到主版本意味着:这是一个版本,所有测试都完成了

这意味着master始终包含当前的活动状态,因此从master分支热修复程序保证不会引入开发所做的任何其他更改


这只是对git flow实现的应用程序的简短介绍。我建议你通读一遍。它还有一些漂亮的图形:)

这个问题不是更适合程序员吗。se?我不知道,从来没有去过那里。我想应该看一看。:)以下是最佳实践:不要将Git用作部署工具。使用-猜猜是什么-专门的部署工具。这看起来真是太棒了!我今晚要调查这件事。它唯一不能修复的是用Wordpress的上传功能添加的文件。@Gideon:我真的不明白那部分:)为什么不干脆
git添加它们呢?你不能“@”我,因为你在评论我的答案。无论如何,我都会得到通知:)我不知道beanstalk和所有其他相关软件,所以我可能在这里建议胡说八道。但还是有一些想法:git在接收文件的服务器上克隆您的存储库,使文件自动位于正确的子目录中。定期向此目录中的所有新文件添加cronjob。
git Add.
git commit
git push
。有关如何创建git工作的cronjob,请参阅(向下滚动至“第2部分”)。它可以拉,但你应该能够轻松地调整为“添加、提交、推”。@Gideon:如果你总是只使用一个功能,是的。一个小例子:我是某个软件的唯一开发者。尽管如此,我仍在开发
develope
和两个功能分支。在开发时,我检查一些小的修复,例如:注释中的输入错误、变量重命名、小错误修复等。在一个功能分支上,我开发了一个新功能,其开发需要一些时间。在另一个特性分支上,我执行一些中等规模的重构。这两个功能分支都通过
git-flow-feature-rebase
定期重设到develop上。