IntelliJ IDEA中的变更列表是什么?相比清单变化有哪些?寻求对

问题描述 投票:20回答:1
的准确解释

IntelliJ IDEA中的变更列表是什么?相比清单变化有哪些?我可以有多个变更列表是什么意思?

特别是,当我还原到较早的版本(使用VCS)时,IntelliJ希望为此创建一个新的更改列表。为什么?在那种情况下,更改将与什么有关?假设我从版本23还原到版本9。那么更改列表将包含版本23和9之间或版本8和9之间的更改?

我试图阅读文档,但完全没有给我任何启发。

例如,IntelliJ变更列表与Mercurial中变更集的概念是否相同,在这种情况下,变更列表在概念上只是修订历史记录图中节点的另一个名称?

intellij-idea version-control mercurial changeset changelist
1个回答
39
投票

变更列表是您与版本控制历史记录相比已更改的一组文件。它与版本控制变更集的不同之处在于,提交代码时会创建版本控制变更集。编辑代码时会出现一个IDEA更改列表,提交代码后将清除它。

IDEA更改列表可让您跟踪所做的更改。您可以快速查看所有具有更改的文件(与上一次版本控制更新/拉动相比)。它们非常有用,因为您一次创建了多个变更集(但只有一个处于活动状态),并且它们可以链接到任务(即故障单或错误跟踪器)。

所以可以说我正在研究“新搜索功能”。我为此创建了一个更改列表并将其激活。在编写代码时,我所做的所有更改都将继续到该列表中。在工作时,我获得了针对DB Hang的紧急错误修复。我创建一个“数据库挂起”更改列表并将其激活。现在,我进行的所有更改/编辑都将进入“数据库挂起”更改列表。完成后,我只能提交“ DB Hangs”变更列表中的文件。这样可以防止在执行(仍不完整)“新搜索功能”任务时更改的任何文件。提交“数据库挂起”代码修复后,我将“新搜索功能”更改列表激活,并(很可能)删除“数据库挂起”更改列表,并继续进行新搜索功能的编码。我个人还有一个“不提交”更改列表,我将不想提交给版本控制的所有更改文件放入其中(例如,对用于隔离/本地测试的配置文件进行了更改)。注意:您可以轻松地将更改的文件从一个更改列表移动到另一个更改列表。

UPDATE

自版本2018.1起,IntelliJ IDEA允许文件出现在多个变更列表中。通过blog announcing的新功能:“ IDE现在提供了将代码块(而不是整个文件)与变更列表相关联并分别进行跟踪的功能。可以使用Move to另一个更改列表操作,可从提交更改对话框的差异窗格的上下文菜单中使用。”请参阅该博客以获取更多详细信息。

对于2018.1之前的版本:

当您有多个变更列表时(例如上述错误示例),如果您尝试修改活动变更列表中的文件,该文件也位于非活动变更列表中,IDEA会警告您,文件名将变为红色。例如,假设我在“新搜索功能”的最初工作中更改了“ User.java”,这取决于我为“新搜索功能”创建的许多新文件。然后,我得到了紧急错误,并制作并切换到“ DB Hangs”变更列表。在修复该错误时,我意识到我需要对User.java进行更改。当我开始编辑文件时,IDEA会警告我,它是另一个变更集的一部分。这样可以防止我以后提交User.java而不使用它依赖的新代码,从而破坏构建。收到警告后,我必须决定如何处理它。在编辑User.java的“数据库挂起”修复程序之前,我可以存储“新搜索功能”变更列表,然后在之后将其搁置。 (这两个修复程序中都需要很多文件时,通常这是最好的做法。)或者,我可以将文件移至“ Db Hangs”变更列表。然后,如果我确定所做的更改可以修正错误(即没有其他依赖项),则可以一起提交。或者,我可以回滚该文件中的更改。 (然后稍后使用本地历史记录将其取回)。或者我可以注释掉所做的更改。等

(更新结束)

要回答这个问题:

特别是,当我还原到较早的版本(使用VCS)时,IntelliJ希望为此创建一个新的更改列表。为什么?在那种情况下,更改将与什么有关?假设我从23版恢复到9版。然后,更改列表将包含23版和9版之间或8版和9版之间的更改

当切换到其他VCS版本时,IDEA仅在对先前处于活动状态的版本进行代码更改后才希望创建新的更改列表。这样做的原因是您所做的代码更改是“对该文件版本23的更改”。当您恢复到版本9时,这些更改本身将不再有效。假定您要单独跟踪对版本9所做的更改。我从来没有遇到过这种情况(基于我使用较旧版本或分支的个人工作流程)。但是,如果您想使用在查看版本23和版本9时所做的更改,则应该可以将其移至新的更改列表,或激活原始的更改列表。

© www.soinside.com 2019 - 2024. All rights reserved.