从 mercurial 存储库中删除所有本地书签和提交
Remove all local bookmarks and commits from mercurial repository
我正在寻找剥离所有本地提交(即未在远程回购中提交)并从 mercurial 存储库中删除所有本地书签的最简单方法。我知道我可以 运行 类似 hg bo | xargs hg strip && hg bo | xargs hg bo -d
的东西(显然是剥离提交哈希值)但是当我堆叠提交时我在尝试这样的事情时遇到了麻烦。
是否有一种简单的方法(如果有点笨手笨脚,也许)可以消除对存储库副本的所有本地更改,而只留下一个完全反映远程存储库的方法?谢谢!
- 为了剥离子树,您可以手动剥离最老的祖先
The strip command removes the specified changesets and all their descendants.
- 为了获得未发布的变更集的根,您可以使用 revsets 和模板。如果你有一个远程仓库(使用
default
别名),它将只是
hg log -r "roots(outgoing())" -T "{node|short}\n"
对于许多遥控器,revset 可以修改为
roots(outgoing(PATH1) & outgoing(PATH2) ... & outgoing(PATHN))
或(有一些假设:a)Mercurial 支持阶段 b)未使用秘密阶段 c)远程回购是普通的 "publishing repo")
roots(draft())
(未推送的变更集默认处于草稿阶段)
我正在寻找剥离所有本地提交(即未在远程回购中提交)并从 mercurial 存储库中删除所有本地书签的最简单方法。我知道我可以 运行 类似 hg bo | xargs hg strip && hg bo | xargs hg bo -d
的东西(显然是剥离提交哈希值)但是当我堆叠提交时我在尝试这样的事情时遇到了麻烦。
是否有一种简单的方法(如果有点笨手笨脚,也许)可以消除对存储库副本的所有本地更改,而只留下一个完全反映远程存储库的方法?谢谢!
- 为了剥离子树,您可以手动剥离最老的祖先
The strip command removes the specified changesets and all their descendants.
- 为了获得未发布的变更集的根,您可以使用 revsets 和模板。如果你有一个远程仓库(使用
default
别名),它将只是
hg log -r "roots(outgoing())" -T "{node|short}\n"
对于许多遥控器,revset 可以修改为
roots(outgoing(PATH1) & outgoing(PATH2) ... & outgoing(PATHN))
或(有一些假设:a)Mercurial 支持阶段 b)未使用秘密阶段 c)远程回购是普通的 "publishing repo")
roots(draft())
(未推送的变更集默认处于草稿阶段)