使用hg rebase的Mercurial线性历史记录具有未更改的更改

dra*_*vic 3 version-control mercurial dvcs tortoisehg

假设我在本地仓库中有几个提交,并且在工作目录中有一些未经修改的更改.之后hg pull,hg update我从中央仓库获得了几个新的变更集,在本地仓库中创造了新的头脑.

现在假设,我不想合并这两个头并推送,在这种情况下,当我尝试合并时,我会得到消息,即我在工作目录中有未经修改的更改.

同样,假设我不想使用hg shelve以搁置未经修改的更改并合并而没有问题,但是想通过使用创建线性历史记录hg rebase,所以我将我的提交放在提交的提交之上.当我做底垫,有效地我做了合并,所呈现在这里,下hg rebase章.

现在我的问题是,我是否会收到相同的错误消息:"无法进行合并,存在未经修改的更改",因为hg rebase隐式合并是否存在?

如果是,那么我将不得不hg shelve在两种情况下都使用:两个头的显式合并和变基时的隐式合并,不是吗?

提前谢谢,
干杯

acm*_*acm 5

简单的答案是肯定的.hg rebase当您进行未提交的编辑时,将不允许您执行rebase.有一些解决方案,其中没有一个是完美的:

  • 提交你的奥斯坦丁工作,做底垫,然后hg export tip > foo.patch,hg strip tiphg import --no-commit foo.patch.

  • 使用hg shelve.我没有详细评论,因为我没有尝试过.

  • 创建一个新的命名分支,hg branch <branch-name>并在命名分支上提交您的杰出工作.然后,您可以使用hg rebase --keepbranches --base <branch-name> --dest default在新更改的基础上重新设置工作分支.我个人认为使用命名分支(从不将我的克隆转移到上游)是一种非常好的方式来管理这种工作流,因为它可以很容易地在上游和我当前的项目之间来回移动,并且承担分支机构不会受到处罚.