【问题标题】:Can mercurial rebase delete a branch?mercurial rebase 可以删除一个分支吗?
【发布时间】:2012-08-09 21:32:08
【问题描述】:

这是一个 hg 会话的摘要:

> hg branch dev
marked working directory as branch dev
(branches are permanent and global, did you want a bookmark?)
> hg branch
dev
> hg ci -m 'test'
> hg update default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
> hg pull --rebase
pulling from ssh://hg@bitbucket.org/user/repo
searching for changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 44 changes to 44 files (+1 heads)
saved backup bundle to C:\repo\.hg\strip-backup\edc5f75b39d1-backup.hg

问题是,在这一切之后,“开发”分支没有任何痕迹。我无法理解它。我在 dev 分支中提交了一个变更集,所以它必须被保存。怎么可能消失?可以以某种方式重新删除它吗?

编辑:只是为了澄清“测试”提交在那里,但它在“默认”分支中

【问题讨论】:

  • "问题是,在这一切之后,'dev'分支没有任何痕迹" --- 你怎么知道的? hg branches ? PS:就我个人而言,我永远不会这样做pull --rebase
  • 我知道是因为我检查了:) hg 分支只显示“默认”。 pull --rebase 有什么问题?
  • 我不相信分支消失了。怎么了 - 我只是喜欢自己管理变更集 ;-)
  • "只是为了澄清 'test' 提交在那里,但它在 'default' 分支中" --- 有可能对来自 dev 的 rebase 传入变更集和变更集进行 rebase 跨度>
  • 这听起来像是根本不应该发生的事情。我现在正在尝试复制但没有成功。

标签: mercurial branch rebase


【解决方案1】:

终于可以重现了!

您的命名分支从默认分支上的 本地 变更集分支出来。

当您运行 pull --rebase 时,它会将拉取的变更集插入树中,然后将本地变更集从默认分支重新定位到拉取的默认变更集。

由于您的分支dev 是从该本地更改集分支出来的,因此它也被重新定位。此外,由于您不能将--keepbranches 传递给pull --rebase,因此您会丢失分支名称。

为防止这种情况发生,将dev 分支出公共变更集或使用--keepbranches 手动运行rebase。

【讨论】:

  • 谢谢爱德华,我现在可以确认我得到了同样的结果——如果我分支出一个本地变更集,这个分支就会被删除。公共 - 没问题。不过,我仍然不明白为什么这种行为是默认行为而不是 --keepbranches。
猜你喜欢
  • 1970-01-01
  • 2014-05-28
  • 2017-02-05
  • 2021-04-17
  • 2012-10-27
  • 2014-03-18
  • 1970-01-01
  • 1970-01-01
  • 2015-11-06
相关资源
最近更新 更多