IntelliJ IDEA版本控制的概念
IntelliJ IDEA 提供与多个版本控制系统(在文档中称为 VCS)的集成。这包括支持特定于每个 VCS 的功能以及针对常见 VCS 任务的统一接口和管理。
IntelliJ IDEA 支持的版本控制系统
版本控制系统支持的集成列表由当前启用的插件集合决定。
IntelliJ IDEA 中受支持的版本控制系统(VCS)入门的基本原则非常相似,不过有些命令和设置是特定的,并且符合版本控制系统约定。除了常见信息之外,您还可以在以下部分找到特定于 VCS 的过程:
- 使用 Git 集成
- 使用 GitHub 集成
- 使用 Subversion 集成
- 使用 Mercurial 集成
- 使用 CVS 集成
- 使用 Perforce 集成
- 使用 Visual SourceSafe 集成
- 使用 ClearCase 集成
- 使用 TFS 集成
统一的版本控制功能
IntelliJ IDEA 除了支持一般的和单独的 VCS 命令外,还提供了几个独特的功能,可以简化和加速任何版本控制系统的工作。
- 对于启用了 VCS 支持的项目,将标准 VCS 操作(提交、更新、还原、显示差异和显示历史记录)添加到主工具栏。
- 提交并更新整个项目。
- 用于配置通用版本控制系统设置的统一接口。
- Changelists 支持所有集成的版本控制系统。
- 接下来,上一页、回滚、显示差异操作可从已更改位置的专用装订线栏中获得。
- 查看文件/目录的修订历史记录。
- 在重构时自动检出所有受影响的文件。
- 高级版本控制工具窗口,具有多个专用选项卡:历史记录、状态、更新信息等。
注意不同版本控制系统中的术语差异。例如,为了表示登记功能, Git 使用术语 “commit”, Subversion 使用 “submit” 等。
基于目录的版本控制模型
IntelliJ IDEA 采用了基于目录的版本控制关联模型。将版本控制系统分配给项目目录和作为项目的一部分或与之相关的其他目录。版本控制下的目录不需要位于项目根目录下。他们可以存在于任何方便的位置。
.idea 目录中的所有设置文件都都应放在版本控制下,除了 workspace.xml(存储您的本地首选项)之外。workspace.xml 文件应该被标记为被 VCS 忽略。
变更列表
变更列表是文件中的一组更改,代表源代码中的逻辑更改。在变更列表中指定的更改在提交(推送)之前不会存储在存储库中。
对源文件所做的任何更改都会自动包含在活动列表中。最初,“默认更改列表”处于活动状态,但您可以使任何其他更改列表处于活动状态。活动列表显示在 "版本控制" 工具窗口的顶部, 其名称将以粗体字体高亮。
除了默认的变更列表之外,还可以创建新的变更列表,删除现有列表(默认的变更列表除外),以及在变更列表之间移动文件。
所有修改、删除、版本和其他文件都在版本控制工具窗口中进行管理。从这个窗口你可以:
- 提交(推)变更列表。
- 创建新的变更列表(如果您想要关注某些文件和更改)。
- 删除现有的变更列表并设置默认的变更列表。
- 在变更列表中回滚已修改的文件。
- 将版本文件和目录添加到版本控制中。
- 在变更列表之间移动文件。
- 显示所选文件的差异。
- 刷新 VCS 更改的列表。
- 跳转到变更列表中的源代码。
- 搁置(隐藏)和取消搁置(unstash)的改变。
本地、存储库和传入更改
注意:分布式版本控制系统(例如 Git 和 Mercurial)不支持存储库和传入更改。
IntelliJ IDEA 区分了三类更改: 本地、存储库和传入。
- 本地更改:您在本地工作副本中引入的更改,但尚未签入到存储库中。
- 存储库更改:您和其他团队成员已经检入存储库的更改。
- 传入更改:已经检入到存储库中的更改,但尚未在本地检出。
所有这些类型的更改都显示在版本控制工具窗口的各个选项卡中。有关更改的信息存储在历史记录缓存中。配置此缓存的大小以及在一般 VCS 设置中刷新信息的频率。
本地历史
在编辑、测试或编译时,源代码会不断变化。任何版本控制系统都会跟踪提交版本之间的差异,但提交之间的本地更改将被忽略。 “本地历史记录”是您的个人版本控制系统,用于跟踪计算机上源代码的更改,并允许您在必要时比较版本和回滚更改。本地历史记录随时听候您的调遣,不需要任何步骤来启用它。
本地历史独立于外部版本控制系统,即使在不受任何 VCS 控制的情况下,也可以与您的项目目录一起工作。它适用于任何结构构件:项目、目录或包、文件、类、类成员、标记或文本的选定片段。
与通常的版本控制系统不同,“本地历史记录”用于您的个人使用,它不支持共享访问。
使用本地历史记录,IntelliJ IDEA 会根据一组预定义事件(测试,部署,提交或更新)自动跟踪您对源代码所做的更改、重构的结果以及源代码的状态。
本地历史修订标有标签,与传统版本控制系统中的版本类似。基于预定义事件的标签会自动添加到本地修订版本中;除此之外,您可以将自己的标签放置在项目构件上以标记您的更改。还原或查看差异是针对这些标签执行的。
本地历史有一定的局限性:
- 仅可对文本文件进行跟踪本地更改。二进制文件没有本地历史记录。
- 对于大于 1M 字节的文件,本地历史只跟踪更改的事实,但不保留相应的内容。
- 本地历史记录不支持共享访问。
补丁
IntelliJ IDEA 帮助您创建和应用补丁到源代码。修补程序是标准文本格式的文件,它具有 * .patch 扩展名,并包含两组源文件之间的差异列表。
修补程序只包含对文本文件的更改。对二进制文件的更改无法修补。
这个概念与搁置变动的概念紧密相关。
搁置的变化
当您没有时间将源代码带到某个必需的条件或需要处理紧急的高优先级任务时,您可以遇到这种情况。在这种情况下,您可能需要将一些更改搁置在一边,并且继续使用稳定的版本。
使用 IntelliJ IDEA,您可以使用货架临时存储推迟的更改。在适当的时候,所需的变化可以从架子上取回(未保存)。
IntelliJ IDEA 可以搁置单独的文件和整个更改列表。因此,您可以取消搁置整个货架或特定文件。