IntelliJ IDEA中的更改列表是什么?一个变化列表比较什么?寻求准确的解释

时间:2014-01-30 16:44:24

标签: intellij-idea version-control mercurial changeset changelist

IntellJ IDEA的更改列表是什么? 一个变化列表比较什么? 我可以拥有多个变更清单是什么意思?

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

我试着阅读文档,但它根本没有给我任何启发。

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

1 个答案:

答案 0 :(得分:37)

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

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

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

如果您有多个更改列表 - 例如上面的错误示例 - 如果您尝试修改活动更改列表中同样位于非活动更改列表上的文件,IDEA会发出警告并且文件名变为红色。例如,假设我作为“新搜索功能”的初始工作的一部分,我对“User.java”进行了更改,这取决于我为“新搜索功能”工作创建的一些新文件。然后我得到紧急错误并制作并切换到“数据库挂起”更改列表。当我修复该bug时,我意识到我需要对User.java进行更改。当我开始编辑文件时,IDEA警告我它是另一个变更集的一部分。这使我无法在以后提交User.java而没有依赖它的新代码,从而破坏了构建。当我收到警告时,我必须决定如何处理它。在编辑User.java以进行“数据库挂起”修复之前,我可以保存“新搜索功能”更改列表,然后取消保留它。 (当这两个修复程序中需要大量文件时,这通常是最好的事情。)或者,我可以将文件移动到“Db Hangs”更改列表。然后,如果我确定更改可以进入错误修复(即没有其他依赖项),我可以一起提交。或者我可以回滚该文件中的更改。 (然后使用当地历史来取回它们)。或者我可以评论出这些变化。等等。

<强>更新

抱歉,我忘了回答这个问题:

  

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

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