如何管理 Git 中的开发分支?
How to manage a development branch in Git?
对开发人员和用户来说最好的分支技术是什么?
我正在开发一个新的 JS 项目,并希望将其推送到 GitHub。我可以想到一些技术,但不知道哪一个可能是最好的。
有几个 JS 文件,它们应该可用于开发(正常 + 日志)和生产(缩小和连接)和对普通用户不重要的测试文件。我将使用 Gulp 创建那些缩小的文件。
目前的想法:
- 一个普通的开发人员分支,或多或少是主分支的副本。
只包含缩小文件而不包含测试用例的主分支。
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
分支用于发布版本。
对开发人员和用户来说最好的分支技术是什么? 我正在开发一个新的 JS 项目,并希望将其推送到 GitHub。我可以想到一些技术,但不知道哪一个可能是最好的。 有几个 JS 文件,它们应该可用于开发(正常 + 日志)和生产(缩小和连接)和对普通用户不重要的测试文件。我将使用 Gulp 创建那些缩小的文件。
目前的想法:
- 一个普通的开发人员分支,或多或少是主分支的副本。
只包含缩小文件而不包含测试用例的主分支。
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
分支用于发布版本。