使用Mercurial队列扩展,我可以使用一些提交消息进行空提交,如下所示:
hg qnew patch_name -m "message"
如果没有Mercurial队列,有没有办法做到这一点?我试过简单地说:
hg commit -m "message"
但是hg只是说“没有改变”而且没有提交,我没有看到任何“强制”选项会覆盖它。
如果您想知道我这样做的动机:我们有测试基础设施,您可以将其推送到特殊的存储库,它将触发自动测试运行。您需要在最尖端提交的提交消息中放入一个特殊字符串,该消息说明要运行哪些测试。显然,当我推送到实际的存储库时,我不希望这个字符串存在。而不是修改提交两次(一次添加特殊字符串,第二次删除它),我会发现只添加一个空提交,然后回滚它更清洁 - 我可以用mq做到这一点,但我想在没有mq的情况下找到一种方法。
答案 0 :(得分:15)
您可以使用hg commit --amend
创建空提交。
只需创建一个任意提交并撤消更改。然后将两个提交折叠起来。
示例:强>
touch tmp # create dummy file
hg add tmp # add file and...
hg commit -m "tmp" # ... commit
hg rm tmp # remove the file again and ...
hg commit --amend -m "empty commit" # ... commit
答案 1 :(得分:4)
您可以进行关闭分支的提交:
hg commit --close-branch -m "message"
<强>更新强>
您可以关闭分支一次,但可以使用其他提交重新打开。在不更改文件的情况下重新打开分支的最简单方法是标记某些修订。因此,您可以使用hg commit --close-branch
进行空提交,然后使用hg tag
进行重新打开。
更新v2
实际上,您可以使用hg tag
命令创建新的空提交。它具有-m
参数,用于设置提交消息。如果您真的不关心此标记的正确性,则只需使用hg tag
参数调用-f
即可使用一个标记名称:
hg tag t1 -f -m "message"
答案 2 :(得分:3)
您现在只需执行hg ci -m "empty commit"
例如
hg branch my-next-branch
hg ci -m "empty commit"
将使用单个空提交创建一个my-next-branch
,您可以将其推送到远程仓库。