【问题标题】:Empty commit with Mercurial使用 Mercurial 进行空提​​交
【发布时间】:2013-04-30 00:05:21
【问题描述】:

是否可以在不更改当前存储库的情况下使用 Mercurial 进行提交,例如 git 的 --allow-empty

【问题讨论】:

  • 你为什么要这样做?
  • 您可能想要这样做的原因:(1) git 这样做(所以有人认为存在需求),(2) 您使用 mercurial 作为 git 客户端并且需要执行相同的操作提交,(3)具体需求:stackoverflow.com/a/12269801/70170
  • @Mark 我想这样做是因为我关闭了我们的默认分支(因为我需要退出一组被证明是不必要的变更集)并且我想从早期的变更集中提交然后推送到我们的仓库。但是,我们的 CI 需要知道分支是开放的,而不是关闭的,我的团队也是如此。我不想在文件中进行任意更改,而是想推送一个空提交作为分支已从特定点重新启动的信号。
  • 另一个原因:您有两个提交 [A, B] 的堆栈,并且想要在它们之间插入一个新提交。在 git 中,我只需执行 git rebase -i,然后编辑 A。此时,A提交,我所做的任何新提交都在A 之后。 hg histedit 工作方式不同。当我编辑A 时,它是未提交。我不能承诺在它之后添加一个提交。一个简单的解决方法是添加一个 nop 提交,使用 histedit 在 AB 之间移动它,然后编辑 nop 提交。

标签: mercurial commit


【解决方案1】:

上面@Thomas 的回答是正确的,但没有完全解释如何修改提交的文件内容。

使用此功能强制提交为空的简单方法如下:

  1. 添加一个新文件(例如,Dummy.txt)并提交。
  2. hg forget Dummy.txt
  3. hg commit --amend

这将从上一次提交中删除Dummy.txt,使其为空。

【讨论】:

    【解决方案2】:

    我在某处读到的技巧:

    touch tmp
    hg add tmp
    hg commit -m "tmp"
    hg rm tmp
    hg commit --amend -m "Real commit message"
    

    不幸的是,它无法通过变基(可能还有其他操作)。

    【讨论】:

      【解决方案3】:

      通过修改,您可以更改用户、日期、提交消息和文件内容:

      hg commit -m"new message" -d"$(date --rfc-2822)" -u"new user" --amend
      

      这些可能是您想要提交空变更集的所有原因。

      【讨论】:

      • 如果您已经将更改推送到远程仓库,将无法工作。
      • 知道这一点很有用,但是,不,这些并不是全部原因。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 2011-04-03
      • 2011-03-21
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多