0

我从事过一些项目。我可以通过以下方式看到我的项目与其(唯一)父级之间的区别:

hg kdiff3

(在我按照此处所示配置“kdiff3”之后)。但是,我希望能够编辑我的文件,也许删除我的一些更改,编辑其中一些或进行新的更改。但是该命令仅向我显示差异,而不是让我编辑它们。如果我尝试:

hg merge 5861231e8335

(当“5861231e8​​335”是工作目录的(唯一)父级时)我得到:

abort: merging with a working directory ancestor has no effect

那么我怎样才能与父母“合并”呢?(最好使用“kdiff3”)

4

2 回答 2

0

首先,您误解了 hg merge 的作用。它合并了来自 2 个父级的变更集。它不会合并未提交的更改。

要将未提交的更改合并到当前提示更改集中,您需要:

hg commit --amend

它将当前提示替换为新提示。

回答您关于在差异化程序中进行编辑的问题。我不知道在文件差异器中编辑一堆文件的任何方法;那是因为文件集被复制到临时目录中,在那里编辑它们显然毫无意义。但是,您可以一次比较和编辑一个文件,因为一个文件已就地比较,而无需复制到临时目录。

但可以肯定的是,在您的普通编辑器中编辑文件而不是在文件差异器中编辑文件不是更好吗?当然,可以编辑,但只能作为最后的手段。OTOH,如果您使用一次查看一个文件的差异的技巧,则可以在您的真实编辑器中进行编辑,然后在差异器中观察差异的变化。

于 2015-07-16T23:42:45.977 回答
0

hg shelve让您暂时搁置(放在架子上)工作目录与其父级之间的差异部分,因此它将为您提供所需的“删除一些更改”部分。它不允许您进行编辑,但您可以 将更改的内容放在一个架子上,然后重新实现更改。如果你想恢复原来的变化,你只需把新的变化放在一个新的架子上,然后把原来的变化从架子上拉下来。


或者,使用创建父变更集的副本hg export(或hg clone更新到父变更集,但您不需要为此的历史记录),一旦您获得副本,您可以将父变更集的副本与您的工作目录合并在 Mercurial 之外直接使用 kdiff3。

于 2015-07-25T15:22:10.243 回答