假设我们有一个名为main
的项目,然后我们有一个analytics
的项目,而在Bash中,我们在analytics
工作目录并意外地推送到main
远程存储库,将analytics
中的所有文件都添加到main
项目中,是否可逆?
答案 0 :(得分:3)
您将收到Mercurial的投诉,推送将被中止。它看起来像这样:
# create main repo:
% hg init main
% touch main/a.txt
% hg -R main commit --addremove -m main
adding a.txt
# create analytics repo
% hg init analytics
% touch analytics/a.txt
% hg -R analytics commit --addremove -m analytics
adding a.txt
# try the push:
% hg -R analytics push main
pushing to main
searching for changes
abort: repository is unrelated
Mercurial根据其根节点知道两个存储库是否相关。也就是说,如果存储库A和B共享一个公共根节点,则它们是相关的。
答案 1 :(得分:0)
如果main
是本地存储库,您可以导航到main
并执行histedit以删除违规提交。您也可以从基于服务器的main
进行检测,但是如果有其他用户创建了克隆,当他们推送到主服务器时,他们会重新添加更改。
histedit是一个Hg扩展,不与Hg捆绑在一起。安装后,您可以像这样使用它:
> hg histedit <rev>
在哪里是违规提交的开始。 Histedit将生成从提示到提交的提交列表。在此列表中,您可以向histedit指出您要保留提交,编辑注释或删除提交。 Drop应该可以做到。