Git 可以为每个版本增量指定一个特殊的提交吗?

Git 可以为每个版本增量指定一个特殊的提交吗?,git,version-control,incremental-build,Git,Version Control,Incremental Build,我的项目中有一个manifest.json文件,以及一个使用该文件并创建要发送给客户的可交付成果的构建过程(他们是测试人员)。这就是我要做的。每次我都会为开发和错误修复做一些提交,当我认为我准备好了时,我会创建另一个提交,只是为了增加manifest.json文件中的版本。看起来是这样的: @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Blah Blah Blah",

我的项目中有一个
manifest.json
文件,以及一个使用该文件并创建要发送给客户的可交付成果的构建过程(他们是测试人员)。这就是我要做的。每次我都会为开发和错误修复做一些提交,当我认为我准备好了时,我会创建另一个提交,只是为了增加
manifest.json
文件中的版本。看起来是这样的:

@@ -1,7 +1,7 @@
 {
   "manifest_version": 2,
   "name": "Blah Blah Blah",
-  "version": "0.4.2",
+  "version": "0.4.3",
   "description": "Description goes Blah Blah Blah ha ha!",
   "content_scripts": [
     {
~
~
这样行吗?任何其他建议。我在污染你吗

这样行吗?任何其他建议。我在污染你吗

对我来说,它看起来非常好,在它上面设置特殊的标签是非常有用的

例如,如果您关心磁盘空间,在这样做时,Git将只记录
manifest.json
本身,其余的已经在现有对象中引用。因此,这种提交的足迹将保持最小

编辑(包括我们在下面评论中讨论的内容)

在提交之前准备“熟透的”提交以及形成“逻辑单元”总是一个好主意。它甚至在向维护人员提交补丁时也是必需的(至少在Linux内核项目中是如此),因此,如果需要,这个人可以拒绝您的一些补丁,同时继续合并其余的补丁

这样,将技术增强和管理功能分离是一件好事。关于Linux内核,Linus Torvalds本身在Linux的主分支上也做了同样的事情。下面的提交只是切换到“5.13-rc1”版本


这样行吗?任何其他建议。我在污染你吗

对我来说,它看起来非常好,在它上面设置特殊的标签是非常有用的

例如,如果您关心磁盘空间,在这样做时,Git将只记录
manifest.json
本身,其余的已经在现有对象中引用。因此,这种提交的足迹将保持最小

编辑(包括我们在下面评论中讨论的内容)

在提交之前准备“熟透的”提交以及形成“逻辑单元”总是一个好主意。它甚至在向维护人员提交补丁时也是必需的(至少在Linux内核项目中是如此),因此,如果需要,这个人可以拒绝您的一些补丁,同时继续合并其余的补丁

这样,将技术增强和管理功能分离是一件好事。关于Linux内核,Linus Torvalds本身在Linux的主分支上也做了同样的事情。下面的提交只是切换到“5.13-rc1”版本



谢谢你的回答,我不关心磁盘空间,我只想知道这方面的最佳做法是什么,最佳做法将取决于你的工作流程和你所从事项目的指导方针。但从全球角度来看,人们总是被鼓励准备“煮熟”的承诺。因此,将技术资料和管理资料分开是一个好主意,尤其是在以后需要恢复其中一项时。除此之外,Linus Torvalds在Linux内核上也做了同样的事情(例如,查看commit 6efb943b861,它只是切换到5.13-rc1版本)。对于其他想要查看上面提到的Torvald提交的人,感谢链接(之前的评论中包含它有点太长)。如果您同意,我将编辑上面的答案,以包括我们刚才在这里所说的内容。感谢您的回答,我不关心磁盘空间,我只想知道这方面的最佳做法是什么,最佳做法将取决于您的工作流程和您正在从事的项目的指导方针。但从全球角度来看,人们总是被鼓励准备“煮熟”的承诺。因此,将技术资料和管理资料分开是一个好主意,尤其是在以后需要恢复其中一项时。除此之外,Linus Torvalds在Linux内核上也做了同样的事情(例如,查看commit 6efb943b861,它只是切换到5.13-rc1版本)。对于其他想要查看上面提到的Torvald提交的人,感谢链接(之前的评论中包含它有点太长)。如果你同意的话,我将编辑上面的答案以包含我们刚才在这里所说的内容。不要将版本存储在文件中,这个问题(以及许多其他问题)就会消失。让生成系统根据标记生成版本。@williampersell您能详细介绍一下这个解决方案吗?这取决于生成系统。如果您使用的是gradle,则有如下工具。对于autoconf,使用类似于
m4esyscmd([{git descripe--tags--dirty | | | echo unknown;}| tr-d\\n])
。其思想是,不在vcs中存储静态清单,而是生成清单并注入从标记派生的版本。它使最终的工件更加可靠。(例如,您没有500个不同的版本,所有版本都是“1.4.5-PATCH”。)如果不将一个版本存储在文件中,这个问题(以及许多其他问题)就会消失。让生成系统根据标记生成版本。@williampersell您能详细介绍一下这个解决方案吗?这取决于生成系统。如果您使用的是gradle,则有如下工具。对于autoconf,使用类似于
m4esyscmd([{git descripe--tags--dirty | | | echo unknown;}| tr-d\\n])
。其思想是,不在vcs中存储静态清单,而是生成清单并注入从标记派生的版本。它使最终的工件更加可靠。(例如,您没有500个不同的版本,所有的版本都是“1.4.5-PATCH”。)