git 如何提交没有更改的新消息?

lskq00tm  于 2023-02-20  发布在  Git
关注(0)|答案(5)|浏览(321)

如果没有对文件进行更改,如何创建新的commit并创建新消息?
这是不可能的,因为提交的代码(SHA?)将是相同的?

kg7wmglp

kg7wmglp1#

很少有好的理由这样做,但是空提交(没有文件被修改)的参数是--allow-empty,与空提交消息的参数--allow-empty-message相反,你也可以通过输入git help commit或访问the online documentation来了解更多信息。
虽然树对象(它有自己的哈希值)是相同的,但提交实际上有不同的哈希值,因为它可能有不同的时间戳和消息,并且肯定有不同的父提交。所有这三个因素都集成到git的对象哈希算法中。
这里有几个原因,你可能需要一个空提交(包含一些注解):

  • 作为“声明性提交”,添加叙述或文档(通过DavidNeiss),包括有关通过测试或lint(通过Robert Balicki)的事后数据。
  • 测试git命令而不生成任意更改(通过Vaelus)。
  • 使用gitolite(通过Tatsh)重新创建已删除的空存储库。
  • 任意创建一个新的提交,比如为了重新触发构建工具(通过mattLummus),或者为了个人日志或指标(通过DynamiteReed)。取决于你的分支/合并结构,提交可能会存活很长时间,所以“什么都不提交”策略可能会无意中用临时的工作流工件污染你团队的存储库,并使得很难将代码修订与短暂的污染分开。

向提交树添加元数据的其他策略包括:

  • 独立的分支或轻量级标签,总是指向特定状态的提交(例如“上次接受的提交”或“当前阶段提交”)。
  • Annotated Tags,用于记录时间戳、提交者和消息,指向现有提交,而无需在提交树本身添加条目。
  • git notes在现有的不可变提交之上关联一个可变注解。
nzk0hqpo

nzk0hqpo2#

带有消息的空提交

git commit --allow-empty -m "Empty test commit"

带有空消息的空提交,但系统会要求您键入消息

git commit --allow-empty --allow-empty-message

带有空消息的空提交

git commit --allow-empty --allow-empty-message -m ""
1hdlvixo

1hdlvixo3#

如果我没理解错的话,你想做一个空提交,在这种情况下你需要:

git commit --allow-empty
hrirmatl

hrirmatl4#

如果你使用的是gitversion这样的系统,这样的提交很有意义,你可以使用+semver来提交主版本:主要评论。

dauxcl2d

dauxcl2d5#

也许作为一个更明智的选择,你可以创建一个annotated tag(一个带消息的命名提交)。

相关问题