将文件添加到 Git 并跟踪更改
将文件添加到 Git
打开 提交 工具窗口 Alt+0。
通过按 Ctrl+Alt+A 或在上下文菜单中选择 添加到 VCS ,将 未纳入版本控制的文件 更改列表中的任意文件纳入版本控制。 您可以添加整个更改列表,也可以选择单独的文件。
如果您已为项目启用 Git 集成,GoLand 将建议将每个新建文件纳入版本控制。 您可以在 设置 对话框的 中,按 Ctrl+Alt+S 修改此行为。 如果希望某些文件始终保持未版本控制状态,您可以配置 Git 忽略这些文件。
检查项目文件状态
GoLand 允许您查看本地工作副本与项目版本库版本之间的状态。 它可让您查看哪些文件已被修改、哪些新文件已添加到 Git,以及哪些文件未被 Git 跟踪。
打开 提交 工具窗口 Alt+0。

更改 更改列表展示了自上次与远程版本库同步以来所有被修改的文件(以蓝色高亮显示),以及所有已添加到 Git 但尚未提交的新文件(以绿色高亮显示)。
未纳入版本控制的文件 更改列表展示了已添加到项目中但尚未被 Git 跟踪的所有文件。
在编辑器中跟踪文件更改
您还可以在编辑器中修改文件时跟踪其更改。 所有更改都会使用 更改标记高亮显示,标记出现在修改行旁边的边距中,并显示自上次 与版本库同步以来所做的更改类型。 在将更改提交到版本库后,更改标记将消失。
您对文本所做的更改会用颜色标识:

下表列出了部分 配色方案中默认的行高亮颜色及其含义。
颜色 | 行状态 | 说明 |
|---|---|---|
| 已修改的行 | 自上次更新以来被修改的行。 |
| 只修改了空格的行 | 自上次更新以来仅修改了空格的行。 |
| 新增的行 | 自上次更新以来添加的行。 |
| 已删除的行 | 自上次更新以来被删除的行。 |
颜色 | 行状态 | 说明 |
|---|---|---|
| 已修改的行 | 自上次更新以来被修改的行。 |
| 只修改了空格的行 | 自上次更新以来仅修改了空格的行。 |
| 新增的行 | 自上次更新以来添加的行。 |
| 已删除的行 | 自上次更新以来被删除的行。 |
颜色 | 行状态 | 说明 |
|---|---|---|
| 已修改的行 | 自上次更新以来被修改的行。 |
| 只修改了空格的行 | 自上次更新以来仅修改了空格的行。 |
| 新增的行 | 自上次更新以来添加的行。 |
| 已删除的行 | 自上次更新以来被删除的行。 |
当您将鼠标悬停在变更标记上并点击时,会出现一个工具栏,您可以使用该工具栏管理变更。 该工具栏与显示所修改行的之前内容的框架一同显示:

您可以点击 回滚更改,并通过点击
来查看当前行与版本库中版本之间的差异。
与其还原整个文件,您可以复制此弹出窗口中的任意部分内容并将其粘贴到编辑器中。
检查文件状态
GoLand 可让您检查项目文件相对于版本库的状态。 文件状态显示自上次与版本库同步以来对文件执行了哪些操作。
您可以通过文件名所用高亮颜色在任意界面元素(例如编辑器或工具窗口)中查看文件状态。
您可以在 颜色和字体 设置页上自定义文件状态的默认颜色。
您可以在 版本控制 | 文件状态颜色 设置页面上 Ctrl+Alt+S 配置 VCS 文件状态颜色。
下表列出了某些 配色方案 中的默认文件状态颜色及其含义。
颜色 | 文件状态 | 描述 |
|---|---|---|
| 已添加 | 活动 变更列表 中的文件将被添加到版本库。 |
| 在非活动变更列表中添加 | 非活动更改列表中的文件计划添加到版本库。 若启用了 高亮显示非活动变更列表中的文件 选项(位于 ),则可获得此文件状态。 |
| 变更列表冲突 | 非活动变更列表中的文件已在活动变更列表中被修改。 在此情况下,将打开一个新对话框,提示您解决 变更列表冲突。 如果在 中启用了所有选项,则该文件状态可用。 |
| 复制 | 如果某个文件是另一个文件的副本,其元数据将会被追踪,并且该文件将被标记为 已复制。 |
| 已删除 | 该文件计划从版本库中删除。 |
| 已从文件系统中删除 | 该文件已在本地被删除,但尚未计划删除,且仍存在于版本库中。 |
| 包含已更改子级 | 如果某个文件被修改, IDE 将递归高亮显示所有包含该文件的目录。 此状态在 在项目树中高亮显示包含已修改文件的目录 启用时于 中可用。 |
| 直接子级已更改 | If a file is modified, the IDE will highlight its parent directory. 此状态在 在项目树中高亮显示包含已修改文件的目录 启用时于 中可用。 |
| 篡改 | [Perforce、ClearCase、VSS] 文件已 未检出即被修改。 |
| 已忽略 | 该文件已被 VCS 有意忽略,不进行跟踪。 |
| 已合并 | 由于更新,该文件已由 VCS 合并。 |
| 合并时存在冲突 | 在上次更新期间,文件在合并时出现冲突。 |
| 合并时存在属性冲突 | 在上次更新期间,IDE 检测到本地文件与其服务器版本之间的属性差异。 |
| 合并时存在文本和属性冲突 | 当两个或多个开发人员修改文件的相同行和相同文件属性时,会发生文本与属性冲突。 |
| 已修改 | 自上次同步以来,该文件已发生更改。 |
| 在非活动变更列表中已修改 | The file in an inactive changelist has been modified. 该文件状态在 高亮显示非活动变更列表中的文件 启用时于 中可用。 |
| 已废弃 | 该文件不应再出现在您本地版本库的工作副本中。 |
| 已重命名 | 自上次更新以来,该文件已被重命名。 |
| 已切换 | [SVN] 该文件来自与整个项目不同的分支。 |
| (未知)未受版本控制 | 该文件在本地存在,但不在版本库中,也未计划添加到版本库中。 |
| 最新 | 该文件未发生变化。 |
颜色 | 文件状态 | 描述 |
|---|---|---|
| 已添加 | 活动 changelist 中的文件已计划添加到版本库中。 |
| 在非活动 changelist 中添加 | The file in an inactive changelist is scheduled for addition to the repository. 仅在 高亮显示非活动变更列表中的文件 中启用选项时,此文件状态才可用 。 |
| changelist 冲突 | The file in an inactive changelist has been modified in the active changelist. 在此情况下会打开一个新对话框,提示您解决 changelist 冲突。 仅在 中启用所有选项时,此文件状态才可用。 |
| 已复制 | 如果文件是另一文件的副本,则其元数据会被跟踪,这类文件会被标记为 已复制。 |
| 已删除 | 该文件已计划从版本库中删除。 |
| 文件系统中已删除 | 该文件在本地已被删除,但尚未计划删除,版本库中仍存在该文件。 |
| 包含已更改子项 | If a file is modified, the IDE will recursively highlight all directories containing that file. 仅当在 在项目树中高亮显示包含已修改文件的目录 中启用选项 时,此状态才可用。 |
| 包含已更改的直接子项 | If a file is modified, the IDE will highlight its parent directory. 仅当在 在项目树中高亮显示包含已修改文件的目录 中启用选项 时,此状态才可用。 |
| 被劫持 | [Perforce、ClearCase、VSS] 文件 在未签出状态下被修改。 |
| 已忽略 | 文件被有意地从 VCS 跟踪中排除。 |
| 已合并 | 该文件因更新而被您的 VCS 合并。 |
| 合并时存在冲突 | 在上次更新过程中,文件已合并但存在冲突。 |
| 合并时发生属性冲突 | 在上次更新期间,IDE 检测到本地文件与其服务器版本的属性之间存在差异。 |
| 合并时存在文本和属性冲突 | 当两个或多个开发人员修改了文件的相同行和相同文件属性时,会发生文本和属性冲突。 |
| 已修改 | 自上次同步以来,文件已被修改。 |
| 在非活动 changelist 中被修改 | The file in an inactive changelist has been modified. 仅当在 高亮显示非活动变更列表中的文件 中启用选项 时,此文件状态才可用。 |
| 已过时 | 该文件不应再出现在您本地版本库的工作副本中。 |
| 已重命名 | 自上次更新以来,该文件已被重命名。 |
| 已切换 | [SVN] 此文件来自与整个项目不同的分支。 |
| (未知)未加入版本控制 | 该文件在本地存在,但未被加入版本库,也未安排加入。 |
| 最新 | 该文件未发生更改。 |
颜色 | 文件状态 | 描述 |
|---|---|---|
| 已添加 | 活动的 changelist 中的文件已计划添加到版本库中。 |
| 已添加到非活动 changelist | The file in an inactive changelist is scheduled for addition to the repository. 此文件状态在 高亮显示非活动变更列表中的文件 选项在 中启用时可用。 |
| changelist 冲突 | The file in an inactive changelist has been modified in the active changelist. 在此情况下,将打开一个新对话框,提示您解决 changelist 冲突。 此文件状态在 中所有选项启用时可用。 |
| 已复制 | 如果某个文件是另一个文件的副本,其元数据将被跟踪,并标记为 已复制。 |
| 已删除 | 该文件已计划从版本库中删除。 |
| 从文件系统中删除 | 该文件已在本地删除,但未安排删除,并且仍存在于版本库中。 |
| 包含已更改的子项 | If a file is modified, the IDE will recursively highlight all directories containing that file. 此状态在 在项目树中高亮显示包含已修改文件的目录 选项在 中启用时可用。 |
| 包含直接已更改的子项 | If a file is modified, the IDE will highlight its parent directory. 此状态在 在项目树中高亮显示包含已修改文件的目录 选项在 中启用时可用。 |
| 被劫持 | [Perforce、ClearCase、VSS] 文件已 未检出即被修改。 |
| 已忽略 | 文件被有意设置为不被 VCS 跟踪。 |
| 已合并 | 文件因更新而被 VCS 合并。 |
| 合并时发生冲突 | 在上次更新期间,文件合并时发生冲突。 |
| 合并时发生属性冲突 | 在上次更新期间,IDE 检测到本地文件与服务器版本之间的属性存在差异。 |
| 合并时发生文本与属性冲突 | 当两个或多个开发人员修改同一文件的相同行和相同属性时,会发生文本与属性冲突。 |
| 已修改 | 该文件自上次同步以来已发生更改。 |
| 在非活动 changelist 中已修改 | The file in an inactive changelist has been modified. 此文件状态在 高亮显示非活动变更列表中的文件 选项在 中启用时可用。 |
| 已过时 | 该文件不应再出现在您本地版本库的工作副本中。 |
| 已重命名 | 自上次更新以来,该文件已被重命名。 |
| 已切换 | [SVN] 当前文件来源于与整个项目不同的分支。 |
| (未知)未纳入版本控制 | 该文件在本地存在,但未加入版本库,且未计划添加。 |
| 最新 | 该文件未发生更改。 |
从版本库中删除文件
如果您删除了一个受版本控制的文件,除非提交更改,该文件仍然存在于版本库中。 被删除的文件将被置于活动更改列表中,并以灰色高亮显示。
在 项目 工具窗口 Alt+1 中选择一个文件,然后按 Delete ,或从上下文菜单中选择 删除。
在打开的对话框中,您可以选择不搜索用法直接删除该文件,或勾选 安全删除 选项以执行 安全删除 (以确保删除未使用的文件)。
如果发现任何用法,将弹出 检测到用法 对话框列出这些用法。 您可以查看这些用法并在删除该文件前移除对其的引用。
将更改提交到版本库。