如何不进行任何更改和新消息?

d-_*_*_-b 114 git commit

commit如果不对文件进行任何更改,如何创建新消息并创建新消息?

这是不可能的,因为提交的代码(SHA?)将是相同的?

Jef*_*ica 144

很少有理由这样做,但参数是--allow-empty空提交,而不是--allow-empty-message空消息.您还可以通过键入git help commit或访问在线文档来阅读更多内容.

虽然树对象(它有自己的散列)将是相同的,但提交实际上会有不同的散列,因为它可能会有不同的时间戳和消息,并且肯定会有不同的父提交.所有这三个因素都集成到了git对象哈希算法中.


这里你可能要一个空的承诺(包含一些评论),有几个原因:

  • 作为"声明性提交",添加旁白或文档(通过DavidNeiss),包括关于通过测试或lint的事后数据(通过Robert Balicki).
  • 测试git命令而不产生任意更改(通过Vaelus).
  • 使用gitolite(通过Tatsh)重新创建已删除的裸存储库.
  • 任意创建新提交,例如重新触发构建工具(通过mattLummus)或为了个人日志记录或度量(通过BlueJ774).但是,请三思而后行:根据您的分支/合并结构,提交可能会存在很长时间,因此"只提交任何内容"策略可能会无意中使用临时工作流工件污染您的团队的存储库,并且很难将代码修订与短暂的残酷.

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

  • 单独的分支或轻量级标记,始终指向特定状态的提交(例如"最后接受的提交"或"当前的分段提交").
  • 带注释标记,用于记录时间戳,提交者和消息的方式,指向现有提交而不在提交树本身中添加条目.
  • git notes 在现有的不可变提交之上关联可变注释.

  • 另一个原因:如果您在推送之前忽略了提交消息中的重要内容,并且远程不允许强制推送,则您无法执行 `commit --amend`。通过这种方式,您可以让开发人员看到与上一次提交相关的重要消息。 (3认同)
  • 我已经开始关注git flow [分支模型](http://nvie.com/posts/a-successful-git-branching-model/).当你从`dev`创建`dev`分支形式`master`然后是`feat`分支时,`feat`分支看起来来自`master`分支,因为`dev'没有区别提交`feat`分支来自的分支.当你第一次创建`dev`分支时,一个空提交有助于建立`dev`分支,因为它拥有独立于`master`的无限期持久分支.通常,当您将分支用作图层并从单个提交创建两个图层时,它会很有用 (2认同)
  • 我想这样做是因为我推送了一个提交,但忘记在提交消息中提及某些内容。我们的提交消息与问题跟踪和持续集成软件集成在一起,提交消息的内容会影响这些应用程序。有没有更好的办法?就我而言,这似乎是最好的解决方案。我唯一能想象的是以某种方式能够恢复以前的提交。 (2认同)
  • 我只是用它来触发我们的预提交钩子,它为数据库编写脚本。所以有一些变化,只有在脚本运行后 git 才能看到它们。当然可以手动运行它,但是那样会运行脚本两次。 (2认同)
  • 在与 git 服务器(如 github 和 gogs)内置的问题跟踪交互时非常有用。 (2认同)
  • 用于标记从“master”分支过渡到“main”分支;参见例如[此链接](https://dev.to/afrodevgirl/replacing-master-with-main-in-github-2fjf)。这只是使用空白提交来捕获_存储库本身_的重大更改的一个示例,这些更改未被代码版本控制捕获。 (2认同)

Dim*_*ima 33

如果我理解你,你想做一个空提交.在这种情况下,您需要:

git commit --allow-empty
Run Code Online (Sandbox Code Playgroud)


Ado*_*els 25

空提交消息

git commit --allow-empty -m "Empty test commit"
Run Code Online (Sandbox Code Playgroud)

空提交与空消息

git commit --allow-empty --allow-empty-message
Run Code Online (Sandbox Code Playgroud)

  • `allow-empty-message` 标志提示输入提交消息。要跳过该提示,我们可以使用 `-m ""` 传递空的混乱,例如 `git commit --allow-empty --allow-empty-message -m ""` (2认同)

小智 6

如果您使用像gitversion这样的系统,那么进行这种提交很有意义。您可以有一个专门用于使用 +semver: Major 注释来提升主要版本的提交。


kan*_*kan 5

也许作为更明智的选择,您可以创建一个带注释的标签(带有消息的命名提交)。查看git tag -a选项。