Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial 如何正确删除重新启动的分支(原始位)以进行bitbucket同步?_Mercurial_Bitbucket - Fatal编程技术网

Mercurial 如何正确删除重新启动的分支(原始位)以进行bitbucket同步?

Mercurial 如何正确删除重新启动的分支(原始位)以进行bitbucket同步?,mercurial,bitbucket,Mercurial,Bitbucket,摘要:在从已重新启动的分支本地剥离变更集后,如何将bitbucket与我的本地回购同步 详细信息: 我在Mercurial中的代码有一个稳定版本的默认分支。我创建命名分支来进行一些测试,如果更改正常,最终将它们合并到default 我在某个时候创建了一个短暂的extrantemp分支(一次提交),我放弃了它。后来,我重新创建了一个名为extranp的新分支。提交时,Tortoise Hg问我是否要“重启”分支,我说是(这可能是个坏主意) 然后,我决定用hg strip-r 126(其中126是短

摘要:在从已重新启动的分支本地剥离变更集后,如何将bitbucket与我的本地回购同步

详细信息

我在Mercurial中的代码有一个稳定版本的
默认分支。我创建命名分支来进行一些测试,如果更改正常,最终将它们合并到
default

我在某个时候创建了一个短暂的
extrantemp
分支(一次提交),我放弃了它。后来,我重新创建了一个名为
extranp
的新分支。提交时,Tortoise Hg问我是否要“重启”分支,我说是(这可能是个坏主意)

然后,我决定用
hg strip-r 126
(其中
126
是短期变更集)剥离
旧的、短期的临时分支。到目前为止,我对这些分支机构有以下看法:

然后我推到bitbucket,由于它不情愿:)我做了一个
hg推--new branch--force
。其提交视图如下所示:

如您所见,它保留了我剥离的位(提交
5ac3e1b
)。如果我现在把它拉回来:


如何强制bitbucket与本地回购同步,从而不保留原始的
extratemp

由于缺少变更集,无法同步条带。最初的提交已经公开,并且它存在于任何被拉取的地方。即使你将其从主要回购协议中移除,它最终也可能再次被另一个回购协议推后。如果要将其从其他存储库中删除,则必须在所有位置手动将其剥离

如果回购协议是私人的,如果你控制谁有权使用它,这可能是可能的,但对于公共回购协议来说可能会更难。最好的替代方法是在使变更集处于非活动状态时将其保留


要做到这一点,只需将本地回购协议上的两个
extramp
头合并,完全按照这些头进行操作。然后,根据您当前的状态,您的分支应该只有一个头。

顺便说一句,您不应该强制执行任何操作。如果您需要强制执行某项操作,那么您的回购协议可能有问题,您应该在执行之前修复它。在本例中,您的推送创建了两个头部。当我提到bitbucket不愿意接受我的推送时,我知道强制推送可能不是一个好主意。我希望
--force
类似于
hg update-C
,因为它会丢弃与本地位不同的远程位。不过,我应该理解RTFM:)。谢谢你的回答,它把树带到了正确的状态。很公平!无论如何,保持变更集并使其处于非活动状态总是比将其从历史记录中删除要好。这是另一种跟踪已完成或尝试的工作的方式。我同意,通常会关闭导致什么结果都没有的分支机构(如您所述,保留历史记录,一年后不再重试某件事情-这就是我在
kivy
之后所做的)。我在这里犯的错误是重用现有分支的名称并接受它“重新启动”。我应该把它关掉,然后选择一个新名字。