GoLand 2025.2 Help

提交并推送更改到 Git 存储库

将新文件添加到 Git 版本库 ,或修改了已在 Git 版本控制下的文件,并且对其当前状态满意之后,您可以分享您的工作成果。 这包括在本地 提交 ,以将您的版本库快照记录到项目历史中,然后 推送到远程版本库,以便其他人可以访问。

设置您的 Git 用户名

Git 需要知道您的用户名,以将提交与身份关联。 如果您尚未设置用户名,GoLand 将在您首次尝试提交更改时提示您指定。

  • 打开 终端 并执行以下命令之一:

    • 要为您计算机上的每个 Git 仓库设置名称,请使用 $ git config --global user.name "John Smith"

    • 要为单个仓库设置名称,请使用 $ git config user.name "John Smith"

本地提交更改

  1. 打开位于左侧的垂直 提交 工具窗口 Alt+0

  2. 在准备提交更改时,请选择相应的文件或整个更改列表。

    如果按下 Ctrl+K ,则会选择整个活动更改列表。

    您还可以选择 未进行版本管理的文件 节点下的文件 — GoLand 将在一步中暂存并提交这些文件。

  3. 如果您希望 将本地更改追加到最新提交而不是创建一个单独的提交,请选择 修补 选项。

  4. 输入提交说明。 您可以单击 提交消息历史按钮 从最近的提交说明中选择。

    在推送提交之前,您也可以 编辑提交说明

  5. 如果您需要执行提交检查、在提交后将文件上传至服务器,或使用高级选项提交,请单击右下角的 齿轮图标 或按下 Ctrl+O

    高级提交选项弹窗

    可用的选项如下:

    • 作者 :如果您正在提交由其他人所做的更改,可以指定该更改的作者。

    • 签署提交 :选中此项表示您同意签署此提交,证明即将检入的更改由您本人完成,或您对所提交的代码负责。

      启用此选项时,提交说明末尾将自动添加以下行: Signed off by: <username>

    • 提交检查 区域中,选择您希望 GoLand 在将所选文件提交到本地版本库前执行的操作。

      可用的选项如下:

      • 重新格式化代码 :根据 项目代码风格设置格式化代码。

      • 重新排列代码 :根据 排列规则偏好设置重新排列代码。

      • 优化导入 :移除冗余的 import 语句。

      • 清理 :批量应用来自代码清理检查的快速修复。 单击 选择配置文件 ,选择要由 IDE 执行检查的 配置文件

      • 更新版权信息 :根据所选版权配置文件和作用域组合 添加或更新版权声明

      • Go fmt :使用 go fmt 格式化代码。 有关 Go 工具的更多信息,请参阅 Go 工具

    • 高级提交检查 区域,可用以下选项:

      • 提交完成后运行高级检查 :启用此选项可在完成提交后 运行所选高级提交检查

        启用此选项后,即使某些高级提交检查未通过,也会继续提交更改。

      • 分析代码(A) :在提交时分析已修改的文件。 单击 选择配置文件 以选择一个 检查配置文件 ,IDE 将基于此配置文件运行检查。

        例如,如果您替换了 go.mod 文件中的本地路径,GoLand 可以在您提交更改前显示通知。 这有助于避免误将这些替换内容提交的情况发生。

        要启用此功能,请在 提交 对话框设置中选中 分析代码(A) 复选框。

      • 检查 TODO :查看匹配指定筛选器的 TODO 项。 单击 配置 以选择一个 已有 TODO 筛选器 ,或打开 TODO 设置页面并定义要应用的新筛选器。

      • Run Tests将测试作为提交检查运行。 单击 选择配置 ,靠近 Run Tests 并选择要运行的配置。

  6. 准备就绪后,单击 提交提交并推送Ctrl+Alt+K )可在提交后立即将更改推送到远程存储库。 您可以在推送到远程之前查看当前提交以及所有其他提交。

提交文件的一部分

有时在处理与某个特定任务相关的更改时,还会顺带修改其他影响同一文件的非相关代码。 将这类所有更改包含在一次提交中可能不是最佳方案,因为这样会更难以审核、 回滚变基合并等。

GoLand 允许您通过以下方式之一分别提交这些更改:

选择要提交的代码块和特定行

  1. 打开 提交 工具窗口 Alt+0

  2. 要查看选定文件的本地版本与版本库版本之间的差异,请在 提交 工具窗口 Alt+0 中,单击工具栏上的 差异图标 或按下 Ctrl+D

  3. 选中要提交的每个修改或新添加代码块旁的复选框,其他更改保持未选中状态:

    GoLand:部分提交对话框
  4. 如果您只想提交某段代码块中的特定行,请右键单击该行并选择 拆分区块并将所选行包含到提交中

    GoLand:上下文菜单中将当前行包含到提交中的选项

    或者,您可以将鼠标悬停在标尺栏处,选中或取消选中要包含或排除在提交中的行旁边的复选框。

  5. 单击 提交。 未选中的更改将保留在当前变更列表中,以便稍后逐个提交。

从编辑器中提交所选更改

如果您已经提交了更改却发现遗落了某些内容,可以直接从编辑器中快速提交更新。

  1. 在编辑器中更改文件时,请单击标尺栏中的对应 变更标记

  2. 在显示的工具栏中,输入提交消息并点击 提交此更改

    内联提交字段

    在提交消息字段中点击 修补 可将本地更改追加到上次提交中。

将更改放入不同的更改列表

  1. 在编辑器中更改文件时,请单击标尺栏中的对应 变更标记

  2. 在显示的工具栏中,选择修改代码块对应的目标变更列表(或创建新变更列表):

    部分提交更改列表
    部分提交更改列表
  3. 分别提交每个变更列表。

自定义本地变更的查看方式

GoLand 提供多种设置,用于自定义在提交前查看本地更改的工作流程。

自定义提交工具窗口

提交 工具窗口 Alt+0 的位置和行为可根据您的工作流程偏好进行调整。

  • 提交界面可以作为一个独立窗口打开,呈现为对话框形式,但仍为非阻塞(即非模态)窗口。

    提交 工具窗口 Alt+0 中,点击 选项 并选择 查看模式 | 窗口。 要始终将窗口置于 IDE 前方,请选择 查看模式 | 浮动

  • 您可以将 提交 工具窗口设置为显示本地更改列表的窗口,并在准备提交更改时启用提交控件(使用 提交Ctrl+K)。

    设置 | 高级设置 | 版本控制 中,选中 切换提交控件 复选框。

  • 提交 工具窗口可以成为 本地更改 标签页中 日志 标签页中的一部分,位于 Git 工具窗口 Alt+9 中。

    设置 | 高级设置 | 版本控制 中,取消选中 启用“提交”工具窗口 复选框。

自定义差异查看器行为

  1. 提交 工具窗口 Alt+0 中,列出了已更改的文件。 双击更改的文件后,将打开 Diff Viewer 或源文件。

    点击 选项 ,选择 双击时显示 ,然后选择您偏好的选项:

    • 差异 可在双击更改的文件时始终打开 Diff Viewer,以便查看更改内容。

    • 可始终打开文件本身,便于编辑。

  2. 您还可以设置 Diff Viewer 在编辑器中或使用以下设置以单独窗口打开:

    • 在 Diff Viewer 的工具栏中点击 设置 ,然后选择 在单独的窗口中显示差异

    • 设置 | 高级设置 | 版本控制 中,取消选中 作为编辑器标签页打开差异 复选框。

使用 Git 暂存区提交更改

如果您更习惯于使用 staging 概念来提交更改,而不是通过 changelists 自动暂存已修改的文件,请按 Ctrl+Alt+S 打开设置并选择 版本控制 | Git ,然后选中 启用暂存区域 复选框。

Git 暂存区

使用 staging 区可以更轻松地分别提交对同一文件的多个更改(包括重叠变更),并且在不离开编辑器的情况下查看哪些更改已暂存。

暂存变更以进行提交

  1. 执行以下任一操作:

    • 要暂存整个文件,请在 提交 工具窗口 Alt+0 中选择该文件,然后点击其右侧的 添加按钮 ,或按 Ctrl+Alt+A

      从提交工具窗口暂存整个文件
    • 要暂存文件中的特定代码块,请在编辑器中点击已修改块旁边的 更改标记 ,然后点击 暂存

      从编辑器暂存更改

      已暂存的更改(包括在 GoLand 外部暂存的)将在编辑器中以空心更改标记表示:

      表示已暂存更改的边栏标记
    • 要仅暂存某一行等细粒度的更改,或单行中多个更改的其一,请在 提交 工具窗口 Alt+0 中选择包含变更的文件,并在上下文菜单中选择 比较HEAD 版本、暂存版本和本地版本

      此操作将打开三栏式 Diff Viewer ,左侧显示版本库版本、右侧显示本地版本,中间为功能完整的编辑器,您可以在此修改要暂存的内容。

      交互式暂存更改
  2. 准备好后,请按照 本地提交更改 中所述提交更改。

推送更改到远程存储库

在推送更改之前,请先 与远程同步 ,确保本地版本库为最新版本,以避免冲突。

GoLand 允许您从任何分支上传更改至其 跟踪分支 或任何其他远程分支。

  1. 执行以下操作之一:

    • 要从 当前分支推送更改,请按 Ctrl+Shift+K 或从主菜单中选择 Git | 推送

    • 要从具有远程分支的本地分支推送更改,请在 分支 弹出窗口中选择该分支,并从操作列表中选择 推送

    推送提交对话框 打开后会显示所有 Git 仓库(适用于多版本库项目),并列出当前分支自上次推送以来在每个版本库中的所有提交。

    如果您的项目使用多个未同步控制的仓库,默认只选择当前仓库(有关启用同步仓库控制的更多信息,请参阅 版本控制设置:Git)。

  2. 如果版本库中没有远程库,则会显示 定义远程 链接。 单击此链接,在打开的对话框中指定远程名称和 URL。 其信息将被保存,稍后您可以通过 Git | 管理远程 进行编辑(有关更多信息,请参阅 添加远程版本库)。

  3. 如果想要修改推送的目标分支,可以单击分支名称。 标签会变成文本字段,您可在此输入现有分支名或创建新分支。 您还可以单击右下角的 编辑所有目标 链接,同时编辑所有分支名称。

    请注意,您无法更改本地分支:每个所选版本库的当前分支将被推送。

  4. 如果您已有一些提交但暂时不想将其推送到远程分支,请在 日志 选项卡的 Git 工具窗口中选择您想要推送的最后一个提交,并从操作列表中选择 推送此前所有提交… 选项。

    推送提交 对话框打开后,会显示选中提交哈希之前的所有提交。

  5. 如果希望在推送之前预览更改,请选择所需的提交。 右侧窗格显示所选提交中包含的更改。 您可以使用工具栏上的按钮查看提交详细信息。

    如果某次提交的作者不同于当前用户,则该提交会以星号标记。

  6. 准备就绪后,点击 推送 按钮,并从下拉菜单中选择要执行的操作: 推送强制推送 (相当于 push --force-with-lease)。

    仅当当前分支未在 受保护的分支 字段中列出时,这些选项才可用(请参阅 版本控制设置:Git ),否则,您只能执行 push 操作。

推送被拒绝时更新您的工作副本

如果因为您的工作副本已过期而导致 push 被拒绝,且 如果当前分支的推送被拒,则自动更新 选项在 设置 对话框的 Git 设置 页面中未被选中,则 GoLand 会显示 推送被拒 对话框。 请执行以下操作:

  1. 如果您的项目使用了多个 Git 仓库,请指定您希望更新哪些仓库。 如果您希望更新所有仓库,而不管 push 是否被拒绝,请选择 更新所有版本库 选项。 如果取消选中该选项,则只会更新受影响的仓库。

  2. 如果您希望 GoLand 下次在使用此对话框中选择的更新方法时静默执行更新流程,请选择 记住更新方式的选择,并在将来自动更新 选项。

    退出此对话框后, 如果当前分支的推送被拒,则自动更新 复选框将在 设置 对话框的 Git 设置 页面中被选中,所选的更新方法将成为默认方法。

    要更改更新策略,请取消选中此选项,以便在当前分支的推送被拒绝时调用 推送被拒 对话框,应用其他更新流程后再次选择 记住更新方式的选择 选项。

  3. 请点击 变基合并 按钮选择更新方法。

何时需要使用强制推送?

当您运行 push 时,如果远程仓库存在您尚未获取且将被您本地副本覆盖的更改,Git 将拒绝完成该操作。 通常,您需要执行 pull 操作,以便在使用您的更改更新远程仓库之前与其同步。

--force push 命令将禁用此检查,并允许您覆盖远程仓库,从而抹除其历史并可能导致数据丢失。 在后台,当您选择强制推送时,GoLand 将执行 push --force-with-lease 操作,该操作更安全,有助于避免覆盖他人的提交(详细信息请参阅 git push)。

在某些情况下,您可能仍需执行 --force push ,例如当您对已推送的分支进行了 rebase 并希望将其再次推送到远程服务器时。 在这种情况下,当您尝试推送时,Git 会拒绝您的更改,因为远程引用不是本地引用的祖先。 如果在此情况下执行 pull 操作,您将得到该分支的两个副本,之后需要将其合并。

最后修改日期: 2025年 9月 26日