如何管理 Git 中的开发分支?

How to manage a development branch in Git?

对开发人员和用户来说最好的分支技术是什么? 我正在开发一个新的 JS 项目,并希望将其推送到 GitHub。我可以想到一些技术,但不知道哪一个可能是最好的。 有几个 JS 文件,它们应该可用于开发(正常 + 日志)和生产(缩小和连接)和对普通用户不重要的测试文件。我将使用 Gulp 创建那些缩小的文件。

目前的想法:

  1. 一个普通的开发人员分支,或多或少是主分支的副本。
  2. 只包含缩小文件而不包含测试用例的主分支。

    2.1。 developer 分支永远不会合并到 master 中,这对于分支来说可能是不寻常的。

    2.2。普通用户可以下载主 zip,并且只会拥有相关的文件。

我认为第二个的缺点是它更复杂,但我认为它对用户更友好。

第二点或第三点是否有任何真正的缺点,哪个更好?

以下是我将如何做到这一点(并且已经在几个项目中完成):

  • 最初从一个分支开始工作,以保持简单。您可以稍后添加更复杂的分支结构(见下文)。
  • 在您的存储库中添加类似 dist 文件夹的内容。这将使您的生产准备好,缩小文件。
  • 在 Gulp 脚本中添加任务,根据需要在 dist 文件夹中创建文件,例如当你创建一个版本时。此时编译、uglify、minify 等,然后 add/commit 文件到 dist 文件夹。
  • 通过使用 git tag 标记版本来创建发布,然后将标记推送到远程仓库。

这样,您可以处理源文件,并在创建正式版本时仅更新 dist 文件夹。您可以通过 Grunt/Gulp 自动执行所有这些操作,并在需要时触发发布。

如果您将其与 npm 或 Bower 之类的东西结合使用(不确定哪一个更适合您的项目而不了解更多),您甚至可以定义在有人想要使用您的项目时下载哪些部分。 npm 和 Bower 都允许您为资源定义 include/exclude 模式。当有人使用 npm/bower install your-library 时,他们只会获得 dist 文件夹的内容,而不是源代码库中包含的任何源代码、测试、虚拟文件。

对于更高级的 branching/release 模型,请查看 Git Flow,它使用 develop 分支进行正在进行的工作,并仅保留 master 分支用于发布版本。