查看更改
本主题说明如何跟踪您和您的团队成员对源代码所做的更改。
回顾项目历史
PhpStorm 允许您查看对与指定过滤器匹配的项目源所做的所有更改。
对于分布式版本控制系统,例如 Git 和 Mercurial,您可以 在版本控制工具窗口 的日志选项卡中 查看项目历史记录(请参阅调查 Git 存储库中的更改)。Alt+9
对于集中式版本控制系统,例如 Subversion、Perforce 和 ClearCase,版本控制工具窗口 的Repository 选项卡中 提供了项目历史记录。Alt+9
在编辑器中跟踪对文件的更改
当您修改受版本控制的文件时,所有更改都会在编辑器中突出显示,更改标记出现在修改行旁边的装订线中,并显示自上次与存储库同步以来引入的更改类型。当您将修改后的文件提交到存储库时,更改标记会消失。
您对文本进行的更改是用颜色编码的:
行添加。
线变了。
行已删除。
您可以使用专用工具栏管理更改。要调用它,请将鼠标光标悬停在更改标记上,然后单击它。工具栏与显示修改行的先前内容的框架一起显示:
工具栏中的操作可让您导航到下一个或上一个更改、回滚更改、查看当前版本和存储库版本之间的差异、将修改后的行的上一个版本复制到剪贴板或打开突出显示代码中的差异。
如果要关闭突出显示更改,请取消选中版本控制上的突出显示修改后的行选项。IDE设置的确认Ctrl+Alt+S页面。
将本地更改与存储库版本进行比较
除了在编辑器中浏览文件中的本地更改之外,您还可以查看与文件的基本修订版相比的这些更改。
要预览差异,请在提交工具窗口中选择一个修改过的文件,然后单击工具栏上的 。
左侧窗格显示受影响的代码,就像它在基本修订版中一样,右侧页面显示您在本地进行更改后受影响的代码。
使用工具栏按钮和控件在更改之间导航并配置Change Details窗格或Differences Viewer的外观:
物品 | 工具提示和快捷方式 | 描述 |
---|---|---|
/ | 上一个差异/下一个差异Shift+F7 F7 | 跳转到下一个或上一个差异。 当达到最后一个或第一个差异时,PhpStorm 建议单击箭头按钮或再次按F7/Shift+F7并比较本地修改的其他文件。此行为取决于差异查看器设置中的到达最后更改后转到下一个文件选项。 仅当从提交工具窗口调用 差异查看器时才支持此行为。Alt+0 |
跳转到源 F4 | 在编辑器中打开选定的文件。插入符号放置在与差异查看器中相同的位置。 | |
比较上一个/下一个文件 Alt+LeftAlt+Right | 将上一个或下一个文件的本地副本与来自服务器的更新进行比较。 | |
转到更改的文件Ctrl+N | 显示当前更改集中所有更改的文件并导航到它们。此操作仅在您查看对多个文件的更改时可用。 | |
观众 | 选择查看器模式:并排或统一。并排模式有两个面板,统一模式有一个面板。 您可以在两个查看器中编辑代码并执行Apply、Append、Revert操作。 您只能在并排查看器的右侧更改文本,或在统一查看器的下一行更改文本。 您只能编辑文件的本地版本。您不能编辑具有只读状态的文件。 | |
空白 | 定义差异查看器应如何处理空格。
| |
高亮模式 | 选择突出显示差异粒度的方式。 可用的选项有:
| |
折叠未更改的片段 | 折叠两个文件中所有未更改的片段。不可折叠的未更改行的数量可在Diff & Merge设置页面中配置。要打开Diff & Merge页面,请按打开设置Ctrl+Alt+S并导航到 。 | |
同步滚动 | 单击此按钮可同时滚动两个差异窗格。如果释放此按钮,则可以独立滚动每个窗格。 | |
设置 | 打开可用设置列表。 这些命令也可从差异查看器装订线的上下文菜单中获得。 | |
在外部工具中显示差异 | 调用外部差异工具设置页面上指定的外部差异查看器。 只有在外部差异工具设置页面上启用了使用外部差异工具选项时,此按钮才在工具栏上可用。 | |
帮助 F1 | 打开浏览器并显示相应的帮助页面。 | |
使用 GitBlame 进行注释 | 此选项仅在装订线的上下文菜单中可用。 使用此选项可了解是谁在文件的存储库版本中引入了哪些更改,以及何时。注释视图让您可以查看每一行代码的详细信息,例如该行的来源版本、提交该行的用户 ID 以及提交日期。 有关注释的更多详细信息,请参阅VCS 注释。 |
最有用的快捷方式如下:
捷径 | 描述 |
---|---|
Ctrl+Shift+D | 使用此键盘快捷键显示最常用的差异命令的弹出菜单。 |
Ctrl+Shift+Tab | 使用此键盘快捷键在左右窗格之间切换。 |
Ctrl+Z/Ctrl+Shift+Z | 使用此键盘快捷键撤消/重做合并操作。冲突将与文本保持同步。 |
查看文件或选择的更改历史记录
PhpStorm 允许您查看对文件甚至源代码片段所做的更改。从VCS主菜单和文件的上下文菜单中可以使用Show History和Show History for Selection命令。
文件的更改历史记录显示在版本控制工具窗口 的专用历史记录选项卡中 。Alt+9
代码选择的更改历史以差异查看器的形式显示在单独的窗口中。
查看文件的历史记录
在编辑器中打开一个文件或在项目工具窗口中选择并选择<VCS> | 从上下文菜单中显示历史。
所选文件的历史选项卡出现在 版本控制工具窗口 Alt+9中,文件的名称显示在选项卡的标题栏上。
您可以使用工具栏按钮将所选修订版与本地版本进行比较、比较所选修订版中的类、从 VCS 签出所选修订版、注释所选修订版等:
物品 | 工具提示和快捷方式 | 描述 |
---|---|---|
刷新 | 单击此按钮可刷新当前信息。 | |
显示差异 Ctrl+D | 单击此按钮可将文件的选定修订与其在差异查看器中的先前修订进行比较。 | |
显示所有受影响的文件 Alt+Shift+A | 单击此按钮可打开“修订版中受影响的路径”对话框,您可以在其中查看在选定修订版中修改的所有文件。 | |
显示所有分支 | 单击此按钮可显示来自当前分支以外的分支的更改。 | |
演示设置 | 单击以选择要在“历史记录”视图中查看的信息量。如果您希望 PhpStorm 显示提交时间戳而不是创建更改的时间,您还可以选择Show Commit Timestamp选项。 | |
配置布局 | 单击以选择您要查看的信息类型:
| |
在 GitHub 中打开 | 单击此按钮可打开与GitHub 上所选提交对应的页面。 |
查看历史以供选择
在编辑器中,选择源代码的片段,或将插入符号放在要跟踪其历史记录的行。
选择<VCS> | 主菜单或选择的上下文菜单中显示选择的历史记录。
所选片段的历史记录将在单独的窗口中打开。如果未选择任何内容,则将显示当前行的历史记录。
检查文件状态
PhpStorm 允许您检查项目文件相对于存储库的状态。文件状态显示自上次与存储库同步以来对文件执行了哪些操作。
您可以通过突出显示文件名的颜色来检查任何界面元素(例如,编辑器或各种工具窗口)中的文件状态。
您可以在颜色和字体设置页面中自定义文件状态的默认颜色。
您可以在版本控制 |配置 VCS 文件状态颜色。IDE 设置的文件状态颜色Ctrl+Alt+S页面。
下表列出了默认文件状态颜色及其在某些配色方案中的含义。
颜色 | 文件状态 | 描述 |
---|---|---|
#0A7700 | 添加 | 活动更改列表中的文件计划添加到存储库。 |
#0EAA00 | 添加到非活动更改列表中 | 非活动更改列表中的文件计划添加到存储库。Highlight files from non-active changelists选项,则此文件状态可用。 。 |
#FF0000 | 变更列表冲突 | 非活动更改列表中的文件已在活动更改列表中进行了修改。在这种情况下,将打开一个新对话框,提示您解决更改列表冲突。 中启用了所有选项,则此文件状态可用 。 |
#0A7700 | 已复制 | 如果一个文件是另一个文件的副本,则会跟踪其元数据,并将此类文件标记为已复制。 |
#616161 | 已删除 | 该文件计划从存储库中删除。 |
#773895 | 从文件系统中删除 | 该文件已在本地删除,但尚未计划删除,并且仍存在于存储库中。 |
#8AA4C8 | 改变了后代 | 如果文件被修改,IDE 将递归地突出显示包含该文件的所有目录。突出显示项目树中包含已修改文件的目录”选项,则此状态可用。 。 选项”中启用了“ |
#3264B4 | 有立即改变的孩子 | 如果文件被修改,IDE 将突出显示其父目录。突出显示项目树中包含已修改文件的目录”选项,则此状态可用。 。 选项”中启用了“ |
#B28C00 | 被劫持 | [Perforce、ClearCase、VSS] 文件被修改而不签出。 |
#727238 | 忽略 | VCS 故意不跟踪文件。 |
#7503DC | 合并 | 作为更新的结果,该文件由您的 VCS 合并。 |
#FF0000 | 与冲突合并 | 在上次更新期间,该文件已与冲突合并。 |
#FF0000 | 与财产冲突合并 | 在上次更新期间,IDE 检测到本地文件的属性与其服务器版本之间的差异。 |
#FF0000 | 合并文本和属性冲突 | 当两个或多个开发人员修改文件的相同行和相同的文件属性时,会发生文本和属性冲突。 |
#0032A0 | 修改的 | 自上次同步以来文件已更改。 |
#0047E4 | 在非活动更改列表中修改 | 非活动更改列表中的文件已被修改。Highlight files from non-active changelists选项,则此文件状态可用。 。 |
#7C7C00 | 过时的 | 该文件不应再位于存储库的工作副本中。 |
#007C7C | 重命名 | 自上次更新以来,该文件已重命名。 |
#08978F | 切换 | [SVN] 该文件取自与整个项目不同的分支。 |
#993300 | (未知)未版本化 | 该文件在本地存在,但不在存储库中,并且未计划添加。 |
无(默认颜色) | 最新 | 文件没有改变。 |
颜色 | 文件状态 | 描述 |
---|---|---|
#629755 | 添加 | 活动更改列表中的文件计划添加到存储库。 |
#629755 | 添加到非活动更改列表中 | 非活动更改列表中的文件计划添加到存储库。Highlight files from non-active changelists选项,则此文件状态可用。 。 |
#D5756C | 变更列表冲突 | 非活动更改列表中的文件已在活动更改列表中进行了修改。在这种情况下,将打开一个新对话框,提示您解决更改列表冲突。 中启用了所有选项,则此文件状态可用 。 |
#0A7700 | 已复制 | 如果一个文件是另一个文件的副本,则会跟踪其元数据,并将此类文件标记为已复制。 |
#6C6C6C | 已删除 | 该文件计划从存储库中删除。 |
#6C6C6C | 从文件系统中删除 | 该文件已在本地删除,但尚未计划删除,并且仍存在于存储库中。 |
#6897BB | 改变了后代 | 如果文件被修改,IDE 将递归地突出显示包含该文件的所有目录。突出显示项目树中包含已修改文件的目录”选项,则此状态可用。 。 选项”中启用了“ |
#6897BB | 有立即改变的孩子 | 如果文件被修改,IDE 将突出显示其父目录。突出显示项目树中包含已修改文件的目录”选项,则此状态可用。 。 选项”中启用了“ |
无(默认颜色) | 被劫持 | [Perforce、ClearCase、VSS] 文件被修改而不签出。 |
#848504 | 忽略 | VCS 故意不跟踪文件。 |
#9876AA | 合并 | 作为更新的结果,该文件由您的 VCS 合并。 |
#D5756C | 与冲突合并 | 在上次更新期间,该文件已与冲突合并。 |
#D5756C | 与财产冲突合并 | 在上次更新期间,IDE 检测到本地文件的属性与其服务器版本之间的差异。 |
#D5756C | 合并文本和属性冲突 | 当两个或多个开发人员修改文件的相同行和相同的文件属性时,会发生文本和属性冲突。 |
#6897BB | 修改的 | 自上次同步以来文件已更改。 |
#6897BB | 在非活动更改列表中修改 | 非活动更改列表中的文件已被修改。Highlight files from non-active changelists选项,则此文件状态可用。 。 |
无(默认颜色) | 过时的 | 该文件不应再位于存储库的工作副本中。 |
#3A8484 | 重命名 | 自上次更新以来,该文件已重命名。 |
无(默认颜色) | 切换 | [SVN] 该文件取自与整个项目不同的分支。 |
#D1675A | (未知)未版本化 | 该文件在本地存在,但不在存储库中,并且未计划添加。 |
无(默认颜色) | 最新 | 文件没有改变。 |
颜色 | 文件状态 | 描述 |
---|---|---|
#62CC47 | 添加 | 活动更改列表中的文件计划添加到存储库。 |
#62CC47 | 添加到非活动更改列表中 | 非活动更改列表中的文件计划添加到存储库。Highlight files from non-active changelists选项,则此文件状态可用。 。 |
#FF6666 | 变更列表冲突 | 非活动更改列表中的文件已在活动更改列表中进行了修改。在这种情况下,将打开一个新对话框,提示您解决更改列表冲突。 中启用了所有选项,则此文件状态可用 。 |
#62CC47 | 已复制 | 如果一个文件是另一个文件的副本,则会跟踪其元数据,并将此类文件标记为已复制。 |
#ED864A | 已删除 | 该文件计划从存储库中删除。 |
#ED864A | 从文件系统中删除 | 该文件已在本地删除,但尚未计划删除,并且仍存在于存储库中。 |
#4FF0FF | 改变了后代 | 如果文件被修改,IDE 将递归地突出显示包含该文件的所有目录。突出显示项目树中包含已修改文件的目录”选项,则此状态可用。 。 选项”中启用了“ |
#4FF0FF | 有立即改变的孩子 | 如果文件被修改,IDE 将突出显示其父目录。突出显示项目树中包含已修改文件的目录”选项,则此状态可用。 。 选项”中启用了“ |
无(默认颜色) | 被劫持 | [Perforce、ClearCase、VSS] 文件被修改而不签出。 |
#A9B837 | 忽略 | VCS 故意不跟踪文件。 |
#ED94FF | 合并 | 作为更新的结果,该文件由您的 VCS 合并。 |
#FF6666 | 与冲突合并 | 在上次更新期间,该文件已与冲突合并。 |
#FF6666 | 与财产冲突合并 | 在上次更新期间,IDE 检测到本地文件的属性与其服务器版本之间的差异。 |
#FF6666 | 合并文本和属性冲突 | 当两个或多个开发人员修改文件的相同行和相同的文件属性时,会发生文本和属性冲突。 |
#4FF0FF | 修改的 | 自上次同步以来文件已更改。 |
#4FF0FF | 在非活动更改列表中修改 | 非活动更改列表中的文件已被修改。Highlight files from non-active changelists选项,则此文件状态可用。 。 |
无(默认颜色) | 过时的 | 该文件不应再位于存储库的工作副本中。 |
#4FF0FF | 重命名 | 自上次更新以来,该文件已重命名。 |
无(默认颜色) | 切换 | [SVN] 该文件取自与整个项目不同的分支。 |
D1675A | (未知)未版本化 | 该文件在本地存在,但不在存储库中,并且未计划添加。 |
无(默认颜色) | 最新 | 文件没有改变。 |
VCS 注释
什么是 VCS 注释?
注释是一种文件表示形式,它显示每行代码的详细信息。特别是,对于每一行,您都可以看到该行的来源版本、提交该行的人的用户 ID 以及提交日期。带注释的视图可帮助您找出谁在何时做了什么,并追溯更改。
注释代码行适用于 ClearCase、Mercurial、Git、Perforce 和 Subversion。
Annotate命令可从版本控制菜单的 VCS 特定节点、编辑器装订线的上下文菜单、文件上下文菜单和文件历史记录视图中使用。
启用注释后,装订线类似于以下示例:
当前版本中修改的行的注释用粗体和星号标记。
启用注释
在编辑器或差异查看器中右键单击装订线,然后从上下文菜单中选择注释。
您可以为Annotate命令分配自定义快捷方式:转到IDE 设置的KeymapCtrl+Alt+S页面并查找Version Control Systems | 吉特 | 注释。
配置注释中显示的信息量
您可以选择要在注释视图中看到多少信息。
右键单击注释间距,选择查看并选择您想要查看的信息类型,包括此更改的来源、日期、不同格式的作者姓名和提交号。
您还可以在颜色下设置突出显示。
配置注释选项
右键单击注释装订线并从上下文菜单中选择选项:
忽略空格:空格将被忽略(git
blame -w
)。这意味着注释将指向先前有意义的提交。检测文件中的移动:当提交移动或复制同一文件中的行时,此类更改将被忽略(git
blame -M
)。这意味着注释将指向先前有意义的提交。Detect Movements Across Files:当提交移动或复制同一提交中修改过的其他文件的行时,此类更改将被忽略(git
blame -C
)。这意味着注释将指向先前有意义的提交。Show Commit Timestamp:如果您希望 PhpStorm 在Annotations视图中显示提交时间戳而不是创建更改的时间,请选择此选项。
自定义日期格式
按Ctrl+Alt+S打开 IDE 设置并选择外观和行为 | 系统设置 | 日期格式。
单击 VCS 注释旁边的日期时间模式字段并指定要用于 VCS 注释的日期格式。请参阅模式参考。
注释以前的修订
PhpStorm 让您不仅可以注释当前文件修订,还可以注释以前的修订。注释装订线的上下文菜单中提供了以下选项:
Annotate Revision:如果您想在提交特定更改后检查文件的外观,此选项很有用。为此,请右键单击此更改并从上下文菜单中选择注释修订。
Annotate Previous Revision:如果您发现自己处于特定行中的最后一次更改毫无意义的情况下,例如如果所有更改都是代码格式,则此选项很有用。在这种情况下,您可以检查文件的先前版本的外观。为此,请右键单击更改并从上下文菜单中选择Annotate Previous Revision 。
您还可以从文件历史视图中注释特定文件。在“历史记录”选项卡中,选择要查看的文件版本,右键单击相应的行并从上下文菜单中选择“
查看修订之间的差异
要查看文件的注释版本与其先前版本之间的差异,请将插入符号放在注释上,右键单击它并选择Show Diff。PhpStorm 打开文件的差异查看器:
您也可以调用 VCS Operations PopupAlt+`并选择
。导航到日志
如果您使用 Git 进行版本控制,您还可以从注释视图跳转到 版本控制工具窗口 的日志选项卡中 的相应提交。Alt+9
为此,请将插入符号放在注释上,右键单击它并从上下文菜单中选择在 Git 日志中选择。您还可以使用复制修订号命令在日志中查找修订。
对于托管在https://github.com/上的项目,还可以使用Open on GitHub命令,将您带到相应的提交。