如何在GIT中仅提交消息?

36

假设我已经在一个分支上工作并提交了我的工作,但想要在分支的日志中添加一条消息,说明下一步的待办事项。 我可能会这样做的时间包括:

  • 切换到其他分支进行工作 - 需要提醒自己接下来要做什么
  • 周末
  • 其它

是否可以在不提交任何文件的情况下提交git?另一种表述方式:是否可以仅向GIT提交一条消息?


2
请查看 git help notes - chepner
@chepner,这应该是正确的答案,因为这正是git notes的设计目的 - 可以使用空提交和/或标签(带注释或不带注释)来完成,但这不是这些功能的本意... - twalberg
3个回答

50

可以。这是可能的。我经常忘记如何做,总是需要谷歌一下(所以我写了一个问答希望能帮助我记住)。

命令是:

git commit --allow-empty --only

--allow-empty的文档如下:

通常记录与其唯一父提交具有完全相同树的提交是一个错误,该命令会阻止您进行此类提交。此选项绕过了安全性,并主要供外部SCM接口脚本使用。

文档有意义但不易搜索。


4
我经常使用 --allow-empty,通常是在创建新分支时解释为什么创建该分支。 - gjcamann
我想不出为什么这个选项没有出现在 git commit --help 的选项列表中。我总是记不住这个选项,所以我总是需要回到这里去找它。大概有 30% 的 140 次页面浏览是我自己的。 - sixtyfootersdude

12

你也可以考虑使用带有注释的标签。这样,你就可以在不必重写历史记录的情况下随时删除标签。对我来说,这比向历史记录添加空提交更有意义。

git tag -a TODO-feature-foo -m "next I'm going to..."
git push origin :TODO-feature-foo

一旦不再需要:

git push origin :TODO-feature-foo

这正符合我的需求,因为我想为存储库清理包括起始/结束标记。 - MandisaW

10

注意:如果你已经暂存了修改,但是想要创建只有一条信息的空提交,则你需要(使用 Git 2.12,Q1 2017):

Note: 如果您已经"staged"了更改,但希望创建只包含消息的空提交,则需要(使用Git 2.12,Q1 2017):
git commit --only --allow-empty -m "my message"

"git commit --allow-empty --only" (no pathspec)可以创建一个不更改任何路径的新提交,但由于迄今为止没有人需要它,所以它被禁止了。

请参见beb635c 提交(2016年12月9日)和319d835 提交(2016年12月2日),作者是Andreas Krey (apk)
(由 Junio C Hamano -- gitster --commit 3aead1c中合并)

commit:使--only --allow-empty在没有路径的情况下工作

签名作者:Andreas Krey
审核者:Jeff King

--only 在路径存在时被暗示,并且除非使用--amend,否则需要它。
但是,对于--allow-empty,也应该允许它:这是在存在已暂存更改的情况下创建空提交的唯一方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接