Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何提交无更改和新消息?_Git_Commit - Fatal编程技术网

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服务器的问题跟踪内置程序交互时非常有用。