【发布时间】:2012-04-14 19:57:52
【问题描述】:
在How do I do a pristine checkout with mercurial?Martin Geisler 讨论如何使用以下方法删除已提交 Mercurial 的文件:
hg strip "outgoing()"
但是,如果我想保留添加到“outgoing()”中的文件怎么办 - 示例:
两个用户 a 和 b — 从同一个变更集开始
用户a:
echo "A" > A.txt; hg ci -M -m ""; hg push
用户 b(忘记运行hg pull -u):
echo "B" > B.txt; hg ci -M -m "" B.txt;
echo "C" > C.txt; hg ci -M -m "" C.txt;
如果用户 b 运行hg strip "outgoing()",则 B.txt 和 C.txt 将丢失。 hg rollback 不是一个选项,因为有两个提交。
用户 b 是否可以将他的文件恢复为“本地添加 - 未跟踪”,然后执行 hg pull -u,获取 A.txt,然后处理 B.txt 和 C.txt 的添加/提交/推送?
Martin Geisler 在前面提到的线程中回答了这个问题(我删除并移到这里的评论:
hg update "p1(min(outgoing()))"
hg revert --all --rev tip
hg strip "outgoing()"
hg pull -u
现在用户 c 可以在新文件 B.txt 和 C.txt 中完成他的工作并提交+推送这些文件。
还有其他方法吗?
【问题讨论】:
-
用户 b 不能直接拉取和合并有什么原因吗?
-
@MartinGeisler - 传出文件的提交消息可以在被剥离之前保存吗?
-
别介意 Martin,hg dedicated --stat 很好地概述了删除的内容