Mercurial:如何在工作目录之间切换
IntelliJ IDEA的Mercurial集成提供了将存储库的工作目录更新到指定的变更集或特定的开发线的可能性 。变更集可以通过它们的哈希或以前分配的标签标识符来标识。
您可以将命名分支或书签更新到另一个命名分支、另一个书签或由标签或修订号标识的特定变更集。
- 将命名分支或书签更新到另一个命名分支或书签意味着更新到其头部。更新命名的分支和书签可以通过菜单项“VCS | Mercurial | 更新到”调用,从“分支(Branches)”弹出列表中打开“特定于Mercurial的交换机工作目录”对话框。
- 将命名分支或书签更新到变更集意味着将分支头更新为指定的变更集。变更集可以通过版本号或标签来标识,请参阅https://www.mercurial-scm.org/wiki/Tag。将命名分支或书签更新为特定的变更集只能通过“VCS | Mercurial | 更新为”调用。
默认情况下,Mercurial要求在更新之前,当前工作目录应该是干净的,也就是说,它不应该包含任何未提交的更改。否则,更新操作失败,IntelliJ IDEA将显示相应的错误消息。该消息还建议您通过运行:hg update <target branch, bookmark, or changeset> -C 来放弃未提交的更改来清除当前的工作目录。
如果您当前的工作副本不干净,则可以按照“Shelving”和“Unshelving Changes”中所述提交更改或搁置它们。IntelliJ IDEA提供了在已经调用更新操作时丢弃任何未提交的更改的可能性。此选项仅在“Mercurial特定的交换机工作目录”对话框中可用。
打开分支弹出列表
如果要打开“分支”弹出列表,请执行以下操作之一:
- 在状态栏上,在专用 hg 区域中单击当前命名分支的名称。
- 在主菜单上,选择:VCS | Mercurial | 分支机构。
- 在编辑器或版本控制工具窗口的上下文菜单上中,选择:Mercurial | 分支机构。
切换到另一个命名分支或书签
将命名分支或书签更新到另一个命名分支或书签意味着更新到其头部。
- 请确保当前的工作目录是干净的,也就是说,它不包含任何未提交的更改。如果有未提交的更改的话,请提交或搁置更改。
如果通过“切换工作目录”对话框调用“更新”,则还可以通过放弃任何未提交的更改来防止冲突。
- 通过执行以下操作之一来调用更新:
- 在“分支(Branches)”弹出列表中,单击要更新的分支或书签的名称,然后在弹出菜单中选择“更新到(Update to)”:
- 在主菜单上选择:VCS | Mercurial | 更新到,或在编辑器的上下文菜单上选择:Mercurial | 更新。
在打开的“切换工作目录(Switch Working Directory)”对话框中:
- 从存储库下拉列表中选择目标存储库,该列表显示当前项目根目录下可用的所有Mercurial存储库。
- 选择“分支(Branch)”或“书签(Bookmark)”选项,然后选择命名分支或书签以更新当前工作目录。
- 要防止在更新过程中出现故障(如果当前工作目录不干净),请选中“覆盖本地修改的文件(无备份)”复选框。未提交的更改将被丢弃。
切换到其他变更集
- 请确保当前的工作目录是干净的,也就是说,它不包含任何未提交的更改。如果有未提交的更改的话,请提交或搁置更改。
如果通过“切换工作目录(Switch Working Directory)”对话框调用更新,还可以通过放弃任何未提交的更改来防止冲突。
- 通过执行以下操作之一来调用更新:
- 在“分支(Branches)”弹出列表中,单击要更新的分支或书签的名称,然后在弹出菜单中选择“更新到(Update to)”:
- 在主菜单上选择:VCS | Mercurial | 更新到,或在编辑器的上下文菜单上选择:Mercurial | 更新。
在打开的“切换工作目录(Switch Working Directory)”对话框中:
- 从存储库下拉列表中选择目标存储库,该列表显示当前项目根目录下可用的所有Mercurial存储库。
- 选择“分支(Branch)”或“书签(Bookmark)”选项,然后选择命名分支或书签以更新当前工作目录。
- 要防止在更新过程中出现故障(如果当前工作目录不干净),请选中“覆盖本地修改的文件(无备份)”复选框。未提交的更改将被丢弃。
- 解决冲突。只要发生冲突,“文件合并冲突(Files Merged with Conflicts)”对话框将打开,并显示冲突文件列表。使用对话框的控件来解决问题:
- 要保留当前工作目录的版本,请单击“接受你的(Accept Yours)”。
- 要保留要合并的分支的版本,请单击“接受他们(Accept Theirs)”。
- 要手动解决冲突,单击“合并(Merge)”并使用冲突解决工具,如解决冲突中所述。
如果在更新期间没有发生冲突,则操作将悄悄地传递,更新日志将显示在版本控制工具窗口中。