Git 如何提交无更改和新消息?
如果没有对文件进行任何更改,如何创建新的Git 如何提交无更改和新消息?,git,commit,Git,Commit,如果没有对文件进行任何更改,如何创建新的提交并创建新消息 这是不可能的,因为提交的代码(SHA)将是相同的吗?很少有好的理由这样做,但是参数是--allow empty用于空提交(无文件更改),而不是--allow empty message用于空提交消息。您还可以通过键入git help commit或访问来阅读更多内容 虽然树对象(有自己的散列)是相同的,但提交实际上会有不同的散列,因为它可能会有不同的时间戳和消息,并且肯定会有不同的父提交。所有这三个因素都集成到了git的对象哈希算法中
提交并创建新消息
这是不可能的,因为提交的代码(SHA)将是相同的吗?很少有好的理由这样做,但是参数是--allow empty
用于空提交(无文件更改),而不是--allow empty message
用于空提交消息。您还可以通过键入git help commit
或访问来阅读更多内容
虽然树对象(有自己的散列)是相同的,但提交实际上会有不同的散列,因为它可能会有不同的时间戳和消息,并且肯定会有不同的父提交。所有这三个因素都集成到了git
的对象哈希算法中
您可能需要空提交(包含一些注释)的原因如下:
- 作为“声明性提交”,添加叙述或文档(via),包括关于通过测试或lint(via)的事后数据
- 测试
git
命令而不生成任意更改(通过)
- 使用
gitolite
(via)重新创建已删除的裸存储库
- 任意创建新提交,例如为了重新触发构建工具(via)或为了个人日志或度量(via)。但是,请三思:根据您的分支/合并结构,提交可能会持续很长时间,因此“不提交任何内容”策略可能会在不经意间用临时工作流工件污染您团队的存储库,并且很难将代码修订与短暂的错误区分开来
向提交树添加元数据的其他策略包括:
- 单独的分支或轻量级标记始终指向特定状态的提交(例如“上次接受的提交”或“当前分段提交”)
- 有关记录时间戳、提交者和消息的方法,请指向现有提交,而无需在提交树本身中添加条目
- 在现有不可变提交上关联可变注释
如果我没听错,你想做出一个空的承诺。在这种情况下,您需要:
git commit --allow-empty
也许作为一个更明智的选择,您可以创建一个(带有消息的命名提交)。请参阅git标记-a
选项。如果您使用的是类似的系统,那么执行这种提交非常有意义。您可以有一个提交,专门用于使用+semver:major注释碰撞主版本。空提交一条消息
git commit --allow-empty -m "Empty test commit"
使用空消息进行空提交
git commit --allow-empty --allow-empty-message
我已经开始关注git流。当您从dev
分支窗体master
,然后立即从dev
进行feat
分支时,feat
分支看起来来自master
分支,因为feat
分支所来自的dev
分支上没有明显的提交。第一次执行dev
分支时的空提交有助于将dev
分支建立为独立于master
的自己的永久分支。通常,当您使用分支作为层,并从单个提交创建两个层时,这会很有帮助。另一个原因是:如果在推送之前忽略了提交消息中的重要内容,那么如果远程设备不允许强制推送,则无法执行commit--amend
。通过这种方式,您可以让开发人员看到与上一次提交相关的重要消息。我之所以要这样做,是因为我推了一次提交,但忘记了在提交消息中提及一些内容。我们的提交消息与问题跟踪和持续集成软件集成,提交消息的内容会影响这些应用程序。有更好的办法吗?对我来说,这似乎是最好的解决办法。我唯一能想象的就是能够以某种方式还原以前的提交。我只是用它来触发我们的预提交钩子,它为数据库编写脚本。所以有一些变化,只是git在脚本运行之后才能看到它们。当然可以手动运行它,但这样会运行两次脚本。在与github和gogs等git服务器的问题跟踪内置程序交互时非常有用。