从mercurial存储库中删除所有本地书签和提交

时间:2016-04-08 04:07:27

标签: mercurial repository commit

我正在寻找剥离所有本地提交的最简单方法(即未在远程仓库中提交),并从mercurial存储库中删除所有本地书签。我知道我可以运行像hg bo | xargs hg strip && hg bo | xargs hg bo -d这样的东西(显然是剥离了提交哈希)但是当我有堆叠提交时我在尝试这样的事情时遇到了麻烦。

是否有一种简单的方法(如果有点笨拙的话,可能会)将您对存储库副本的所有本地更改都吹走,让您留下一个完全镜像远程存储库的方法?谢谢!

1 个答案:

答案 0 :(得分:2)

  1. 为了剥离子树,您可以手动剥离最老的祖先
  2.   

    strip命令删除指定的变更集及其所有后代。

    1. 为了获得未发布的变更集的根源,您可以使用revsets和模板。如果您有单个远程仓库(使用default别名),它将只是
    2. hg log -r "roots(outgoing())" -T "{node|short}\n"
      

      对于许多遥控器,revset可以修改为

      roots(outgoing(PATH1) & outgoing(PATH2) ... & outgoing(PATHN))
      

      或(有一些假设:a)Mercurial支持阶段b)秘密阶段未使用c)远程回购是普通的“发布回购”)

      roots(draft())
      

      (默认情况下,未推送的变更集处于草稿阶段)