【问题标题】:Examining a changeset in HG检查 HG 中的变更集
【发布时间】:2010-11-21 17:00:36
【问题描述】:

如何在不查找父级的情况下检查 mercurial 中的变更集?在 mercurial 中,相当于

git show HEAD^

Git-show 提供变更集元数据和差异。

【问题讨论】:

    标签: git mercurial


    【解决方案1】:

    我想你想要hg export cset

    【讨论】:

      【解决方案2】:

      您还应该查看parentrevspec extension 以启用更类似于 Git 的语法来指定修订。

      【讨论】:

        【解决方案3】:

        您的问题有两个部分。首先,如何一次性获取变更集的元数据和差异:

        hg log --patch --rev tip
        

        您可以缩短选项:

        hg log -pr tip
        

        问题的第二部分是如何在不查找的情况下说出“X 的父变更集”。为此,您可以使用提到的parentrevspec extension Martin。

        启用扩展后,您可以执行以下操作:

        hg log -pr tip^
        

        如果您不想从 git 的命令中重新训练手指,可以为您的 ~/.hgrc 文件添加别名:

        [alias]
        show = log -pr
        

        那么你可以使用:

        hg show tip^
        

        【讨论】:

        • 如果没有 parentrevspec,他只需执行“-r -2”即可在提示之前获取变更集,对吧?
        • 是的,没错。不过,这不适用于“hg show mytag ^”之类的东西,对吧?
        • 一般来说,对于这种情况,hg export 是首选(它列出了完整的提交消息等)。
        • 谁喜欢?如果您想要完整的提交消息,您可以将--verbose/-v 添加到日志命令中。 log 的输出更易于阅读(日期和节点/父 ID 采用更友好的格式)并且它支持 --color,与 export 不同。
        • hg help revsets 是你的朋友。您可以使用-r 'parents(rev)' 获取所有父级(在合并的情况下为多个)或-r 'p1(rev)'-r 'p2(rev)' 获取rev 的第一个或第二个父级。
        【解决方案4】:

        与“git show HEAD^”类似的命令是:

        hg log -pr -2   # -1 (last commit), -2 - one before it, etc.
        

        hg exp tip^  # tip^ is similar to -r -2
        

        或者例如,如果您想查看最后 3 次提交(有差异):

        hg log -pr -3:  # colon means start 3 commits behind and up to tip inclusive
        

        答案有点晚了,但仍然。 :)

        更新:显然现在 HG 也支持 git 语法:

        hg exp tip^^^..tip
        

        hg log -pr tip~4
        

        【讨论】:

        • 这不是“完全等价物”:与git show 不同,hg log -pr 只显示提交消息的标题,而不是整个消息。要显示整个消息,还必须传递-v,如hg log -pvr REV
        • @wchargin 很公平。答案真的不够糟糕吗? exp例子呢?
        • 如果答案被固定为不说它们“完全等效”或“等效”,而实际上它们不是,我将非常乐意删除反对票。 :-)
        • 我有一个提交,其消息最初只有一行,后来我对其进行了改写以添加详细信息。我找到了这个答案并运行了hg log -pr -2,发现消息只有一行。由于该命令应该与git show等效,因此我一定是在错误的提交上,所以我花了一些时间试图找出这可能是如何发生的。 (我是不是不小心变基/进化了一些东西?)实际上,我从来没有犯错。我没有对“nitpick”投反对票。我投了反对票,因为这个答案不正确这一事实让我感到困惑并浪费了我的时间。
        • 我仍然认为它在吹毛求疵。我什至不确定git show 是否与 6 年前一样。无论如何,我已经更新了答案,不再使用 equivalent 这个词,以避免进一步混淆。
        【解决方案5】:

        如果您只想查看提交的内容和差异,请使用:

        hg diff -c <the commit hash or bookmark name>
        

        要查看您已签出的提交(git 中的 HEAD),请执行以下操作:

        hg diff -c -1
        

        如果你想查看之前的提交(git 中的 HEAD^),请执行以下操作:

        hg diff -c -2
        

        简单。

        【讨论】:

        • 这样做的好处是它像 git show 一样需要“--stat”。
        猜你喜欢
        • 2014-08-01
        • 1970-01-01
        • 2011-11-08
        • 1970-01-01
        • 2011-02-02
        • 1970-01-01
        • 2019-06-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多