# 提交更改并将其推送到 Git 仓库

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com.cn/help/idea/llms.txt).

> **TL;DR**
> 配置提交选项：   设置 | 版本控制 | 提交
>
>
>
> 提交工具窗口 `Alt+0` (Windows), `⌘ 0` (macOS), `⌘ 0` (IntelliJ IDEA Classic (macOS)), `⌘ 0` (macOS System Shortcuts), `Alt+0` (XWin), `Alt+0` (GNOME), `Alt+0` (KDE), `Alt+0` (Emacs), `Alt+0` (Sublime Text), `⌘ 0` (Sublime Text (macOS)), `Alt+0` (Visual Studio), `Alt+0` (Visual Studio (macOS)), `Alt+0` (NetBeans), `Alt+0` (Eclipse), `⌘ 0` (Eclipse (macOS))
>
>
>
> 提交 `Ctrl+K` (Windows), `⌘ K` (macOS), `⌘ K` (IntelliJ IDEA Classic (macOS)), `⌘ K` (macOS System Shortcuts), `Ctrl+K` (XWin), `Ctrl+K` (GNOME), `Ctrl+K` (KDE), `Ctrl+K` (Emacs), `Ctrl+K` (Sublime Text), `Ctrl+K` (Sublime Text (macOS)), `Ctrl+Alt+K` (Visual Studio), `⌘ ⌥ ⇧ K` (Visual Studio (macOS)), `Ctrl+K` (NetBeans), `Ctrl+K` (Eclipse), `Ctrl+K` (Eclipse (macOS))
>
>
>
> 提交并推送 `Ctrl+Alt+K` (Windows), `⌘ ⌥ K` (macOS), `⌘ ⌥ K` (IntelliJ IDEA Classic (macOS)), `⌘ ⌥ K` (macOS System Shortcuts), `Ctrl+Alt+K` (XWin), `Ctrl+Alt+K` (GNOME), `Ctrl+Alt+K` (KDE), `Ctrl+Alt+K` (Emacs), `Ctrl+Alt+K` (Sublime Text), `⌘ ⌥ K` (Sublime Text (macOS)), `Ctrl+Alt+Shift+K` (Visual Studio), `⌘ ⌥ K` (Visual Studio (macOS)), `Ctrl+Alt+K` (NetBeans), `Ctrl+Alt+K` (Eclipse), `⌘ ⌥ K` (Eclipse (macOS))
>
>
>
> 推送 `Ctrl+Shift+K` (Windows), `⌘ ⇧ K` (macOS), `⌘ ⇧ K` (IntelliJ IDEA Classic (macOS)), `⌘ ⇧ K` (macOS System Shortcuts), `Ctrl+Shift+K` (XWin), `Ctrl+Shift+K` (GNOME), `Ctrl+Shift+K` (KDE), `Ctrl+Shift+K` (Emacs), `Ctrl+Shift+K` (Sublime Text), `⌘ ⇧ K` (Sublime Text (macOS)), `Ctrl+Shift+K` (Visual Studio), `⌘ ⇧ K` (Visual Studio (macOS)), `Ctrl+Shift+K` (NetBeans), `Ctrl+Shift+K` (Eclipse), `⌘ ⇧ K` (Eclipse (macOS))

一旦您已经 [将新文件添加到 Git 仓库](set-up-a-git-repository.html#add-new-files)，或修改了已在 Git 版本控制下的文件，并且对它们的当前状态感到满意，您就可以分享您的工作成果。 这涉及到在本地 [提交](#commit)来记录您的仓库快照到项目历史，然后 [推送](#push)到远程仓库，以便其他人可以使用它们。

Procedure: 设置您的 Git 用户名

Git 需要知道您的用户名以便将提交与身份关联。 如果您尚未设置用户名，IntelliJ IDEA 将在您第一次尝试提交更改时提示您进行指定。

* 打开 [Terminal](terminal-emulator.html) 并执行以下命令之一：

* 要为您机器上的每个 Git 仓库设置名称，请使用 `$ git config --global user.name "John Smith"`

* 要为单个存储库设置名称，请使用 `$ git config user.name "John Smith"`

## 在本地提交更改

Procedure:

1. 打开位于左侧的垂直   提交   工具窗口（ `Alt+0` (Windows), `⌘ 0` (macOS), `⌘ 0` (IntelliJ IDEA Classic (macOS)), `⌘ 0` (macOS System Shortcuts), `Alt+0` (XWin), `Alt+0` (GNOME), `Alt+0` (KDE), `Alt+0` (Emacs), `Alt+0` (Sublime Text), `⌘ 0` (Sublime Text (macOS)), `Alt+0` (Visual Studio), `Alt+0` (Visual Studio (macOS)), `Alt+0` (NetBeans), `Alt+0` (Eclipse), `⌘ 0` (Eclipse (macOS)) ）：

![提交工具窗口](https://resources.jetbrains.com.cn/help/img/idea/2026.3/ij_VCS_commit_tool_window.png)

2. 当您的更改准备好提交时，请选择相应的文件或整个更改集。

如果您按下 `Ctrl+K` (Windows), `⌘ K` (macOS), `⌘ K` (IntelliJ IDEA Classic (macOS)), `⌘ K` (macOS System Shortcuts), `Ctrl+K` (XWin), `Ctrl+K` (GNOME), `Ctrl+K` (KDE), `Ctrl+K` (Emacs), `Ctrl+K` (Sublime Text), `Ctrl+K` (Sublime Text (macOS)), `Ctrl+Alt+K` (Visual Studio), `⌘ ⌥ ⇧ K` (Visual Studio (macOS)), `Ctrl+K` (NetBeans), `Ctrl+K` (Eclipse), `Ctrl+K` (Eclipse (macOS))，整个活动的更改列表将被选中。

您还可以选择   未受版本控制的文件   节点下的文件——IntelliJ IDEA 将在一个步骤中暂存并提交这些文件。

3. 如果希望 [将本地更改追加到现有本地提交](edit-project-history.html#amend-commit)而不是创建新的提交，请选择   修正提交  ，然后点击 ![](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.expui.general.chevronDownLarge.svg)以选择要修改的提交。

4. 输入提交信息。 您可以点击 ![提交消息历史按钮](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.vcs.history.svg)从最近的提交消息列表中选择。

您也可以在推送提交之前 [编辑提交消息](edit-project-history.html#reword-commit)。

> **Tip:**
> 您可以在   版本控制 | 提交  设置页面 `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS))自定义提交消息规则。 还有一个快速修复以及  Reformat  操作，可换行或重新格式化消息。
>
>
>
> 您还可以定义一个提交模板，作为默认的提交消息使用。 在  `.txt`  文件中指定您要使用的样板文本，然后在终端中执行以下命令以将其添加到您的 Git 配置中：  `git config --local commit.template <path_to_template_file>`

5. 如果您需要执行提交检查、在提交后将文件上传到服务器或使用高级选项提交，请点击右下角的 ![齿轮图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.expui.general.settings.svg) 或按下 `Ctrl+O` (Windows), `⌃ O` (macOS), `⌃ O` (IntelliJ IDEA Classic (macOS)), `⌃ O` (macOS System Shortcuts), `Ctrl+O` (XWin), `Ctrl+O` (GNOME), `Ctrl+O` (KDE), `Ctrl+O` (Emacs), `Ctrl+O` (Sublime Text), `Ctrl+O` (Sublime Text (macOS)), `Ctrl+O` (Visual Studio), `Ctrl+O` (Visual Studio (macOS)), `Ctrl+O` (NetBeans), `Ctrl+O` (Eclipse), `Ctrl+O` (Eclipse (macOS))：

![高级提交选项弹出窗口](https://resources.jetbrains.com.cn/help/img/idea/2026.3/ij_VCS_advanced_commit_options.png)

有以下选项：

* 作者 ：如果您正在提交其他人作出的更改，您可以指定这些更改的作者。

* 签署提交 ： 如果您想为提交签署以证明您所要提交的更改是您本人完成的，或者您愿意对所提交的代码负责，请选择此项。 启用此选项时，以下行会自动添加到提交消息的末尾： 签署者：<用户名>

* 在 提交检查 区域，选择您希望 IntelliJ IDEA 在提交选定文件到本地仓库之前执行的操作。 有以下选项： * 重新格式化代码 ：根据 [项目代码样式设置](settings-code-style.html)执行代码格式化。 * 重排代码 ：根据 [排列规则偏好设置](reformat-and-rearrange-code.html) 重新排列代码。 * 优化导入 ：移除冗余的导入语句。 * 清理 ：批量应用代码清理检查中的快速修复。 点击 选择配置文件 以选择一个 [配置文件](customizing-profiles.html)，IDE 将据此运行检查。 * 更新版权 ： [添加或更新版权声明](null)，依据所选的版权配置文件 - 作用域组合。 * 检查恶意依赖项 ：搜索项目中可能声明的 [恶意 NPM 和 PyPI 依赖项](package-analysis.html#malicious-dependencies)。

* 在 高级提交检查 区域中，可使用以下选项： * 在完成提交后运行高级检查 ：启用此选项以在提交完成 后 运行所选高级提交检查。 启用此选项后，如果某些高级提交检查失败，更改仍会被提交。 > **Note:** > 请注意，如果想立即 提交并推送 （ `Ctrl+Alt+K` (Windows), `⌘ ⌥ K` (macOS), `⌘ ⌥ K` (IntelliJ IDEA Classic (macOS)), `⌘ ⌥ K` (macOS System Shortcuts), `Ctrl+Alt+K` (XWin), `Ctrl+Alt+K` (GNOME), `Ctrl+Alt+K` (KDE), `Ctrl+Alt+K` (Emacs), `Ctrl+Alt+K` (Sublime Text), `⌘ ⌥ K` (Sublime Text (macOS)), `Ctrl+Alt+Shift+K` (Visual Studio), `⌘ ⌥ K` (Visual Studio (macOS)), `Ctrl+Alt+K` (NetBeans), `Ctrl+Alt+K` (Eclipse), `⌘ ⌥ K` (Eclipse (macOS))）更改，检查将在提交 之前 完成。 > > > > 此外，此选项在模态提交界面中不可用。 * 分析代码 ：在提交时分析已修改的文件。 点击 选择配置文件 以选择一个 [检查配置文件](customizing-profiles.html)，IDE 将据此运行检查。 * 检查 TODO ：查看与指定筛选器匹配的 [TODO 项目](using-todo.html)。 点击 配置 选择一个 [现有 TODO 筛选器](using-todo.html)，或打开 [TODO 设置页面](settings-todo.html)并定义要应用的新筛选器。 * 运行配置 ： [将测试作为提交检查运行](performing-tests.html#run-tests-after-commit)。 点击 选择配置 ，该项位于 运行配置 附近，然后选择要运行的配置。

* 在 提交后 区域中，可以选择 [服务器访问配置](configuring-synchronization-with-a-remote-host.html)或 [服务器组](server-groups.html)，用于将已提交的文件上传到本地主机或远程主机、已挂载磁盘或目录。 如需更多信息，请参阅 [将文件部署到服务器](deploying-applications.html)。 有以下选项： * 将文件上传到 ：选择 [服务器访问配置](configuring-synchronization-with-a-remote-host.html)或 [服务器组](server-groups.html)，用于将已提交的文件上传到本地主机或远程主机、已挂载磁盘或目录。 * 若要禁止上传，请选择 无 。 * 若要向列表添加服务器配置，请点击 ![浏览按钮](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.general.ellipsis.svg)，并在打开的 部署 对话框中填写必填字段。 仅当启用 FTP/SFTP/WebDAV 连接 插件时，该列表才可用。 * 始终使用所选服务器或服务器组 ：始终将文件上传到所选 [服务器](configuring-synchronization-with-a-remote-host.html)或 [服务器组](server-groups.html)。 仅当启用 FTP/SFTP/WebDAV 连接 插件时，该复选框才可用。

6. 当您准备好时，点击   提交   或   提交并推送   ( `Ctrl+Alt+K` (Windows), `⌘ ⌥ K` (macOS), `⌘ ⌥ K` (IntelliJ IDEA Classic (macOS)), `⌘ ⌥ K` (macOS System Shortcuts), `Ctrl+Alt+K` (XWin), `Ctrl+Alt+K` (GNOME), `Ctrl+Alt+K` (KDE), `Ctrl+Alt+K` (Emacs), `Ctrl+Alt+K` (Sublime Text), `⌘ ⌥ K` (Sublime Text (macOS)), `Ctrl+Alt+Shift+K` (Visual Studio), `⌘ ⌥ K` (Visual Studio (macOS)), `Ctrl+Alt+K` (NetBeans), `Ctrl+Alt+K` (Eclipse), `⌘ ⌥ K` (Eclipse (macOS))) 以在提交后立即将更改推送到远程存储库。 您将能够在推送到远程之前查看当前提交及所有其他提交。

> **Note:**
> 如果有 [Git 钩子](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) 存储在  `.git/hooks`  中，这些钩子会在提交操作期间自动执行。
>
>
>
> 您可以在 [提交设置](#commit_settings) 中清除   运行 Git 钩子   复选框，从而禁用某次提交时运行 Git 钩子。
>
>
>
> 若要在 IDE 级别禁用此选项，请转到  `设置 | 高级设置 | 版本控制。 Git`  并选中   不运行 Git 提交挂钩   复选框。

> **Tip:**
> 如果您希望在单独的模态提交对话框中提交本地更改，请转到  `设置 | 高级设置 | 版本控制`  启用 [模态提交界面插件](https://plugins.jetbrains.com/plugin/26647-modal-commit-interface)。
>
>
>
> 此外，请查看用于 [自定义提交工具窗口的行为](#customize-changes-review) 的选项。

### 提交部分文件

有时候，当您对特定任务进行更改时，您还会对同一文件应用其他不相关的代码修改。 将所有此类更改包含在一个提交中可能不是一个好的选择，因为这样更难以审核、 [revert](undo-changes.html#revert-commit)、 [cherry-pick](apply-changes-from-one-branch-to-another.html#cherry-pick)等。

IntelliJ IDEA 允许您通过以下其中一种方式单独提交这些更改：

* 在 [选择修改后的代码块和行](#select_chunks_in_commit_changes_dialog) 您想要在 提交更改 对话框中立即提交，并将其他更改保留以便稍后提交。

* 编辑代码时，您可以 [将不同的代码块放入不同的变更列表中](#put_changes_into_different_changelists)，然后分别提交这些变更列表。 > **Tip:** > 您还可以创建一个新的 changelist 并 [激活它](managing-changelists.html)，然后您在那之后所做的所有更改都将进入该 changelist，而之前所做的任何修改将保持原状。

Procedure: 选择您想要提交的块和特定行

1. 打开   提交  工具窗口（ `Alt+0` (Windows), `⌘ 0` (macOS), `⌘ 0` (IntelliJ IDEA Classic (macOS)), `⌘ 0` (macOS System Shortcuts), `Alt+0` (XWin), `Alt+0` (GNOME), `Alt+0` (KDE), `Alt+0` (Emacs), `Alt+0` (Sublime Text), `⌘ 0` (Sublime Text (macOS)), `Alt+0` (Visual Studio), `Alt+0` (Visual Studio (macOS)), `Alt+0` (NetBeans), `Alt+0` (Eclipse), `⌘ 0` (Eclipse (macOS))）。​

2. 若要显示所选文件的仓库版本与本地版本之间的差异，请在   提交   工具窗口（ `Alt+0` (Windows), `⌘ 0` (macOS), `⌘ 0` (IntelliJ IDEA Classic (macOS)), `⌘ 0` (macOS System Shortcuts), `Alt+0` (XWin), `Alt+0` (GNOME), `Alt+0` (KDE), `Alt+0` (Emacs), `Alt+0` (Sublime Text), `⌘ 0` (Sublime Text (macOS)), `Alt+0` (Visual Studio), `Alt+0` (Visual Studio (macOS)), `Alt+0` (NetBeans), `Alt+0` (Eclipse), `⌘ 0` (Eclipse (macOS)) ）中，点击工具栏上的 ![差异图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.vcs.diff.svg) 或按 `Ctrl+D` (Windows), `⌘ D` (macOS), `⌘ D` (IntelliJ IDEA Classic (macOS)), `⌘ D` (macOS System Shortcuts), `Ctrl+D` (XWin), `Ctrl+D` (GNOME), `Ctrl+D` (KDE), `Ctrl+D` (Emacs), `Ctrl+D` (Sublime Text), `⌘ D` (Sublime Text (macOS)), `Ctrl+D` (Visual Studio), `⌘ D` (Visual Studio (macOS)), `Ctrl+D` (NetBeans), `Ctrl+D` (Eclipse), `⌘ D` (Eclipse (macOS))。

3. 选择您要提交的每个更改或新增代码块旁的复选框，保留其它未选择的更改：

![部分提交对话框](https://resources.jetbrains.com.cn/help/img/idea/2026.3/partial_commit_dialog.png)

> **Tip:**
> 您还可以从已修改块的上下文菜单中选择   移至另一个更改列表…  ，将更改拆分到不同的变更列表中，并分别进行提交。
>
>
>
> 要为此操作分配自定义快捷键，请在   按键映射  设置页面 `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS))的   版本控制系统  下查找   将行移至另一个变更列表…  操作。

4. 如果您只想提交某个代码块中的特定行，请右键点击您想要包含的行并选择   拆分区块并将所选行包含到提交中  。

![IntelliJ IDEA：在上下文菜单中包含当前行到提交中的选项](https://resources.jetbrains.com.cn/help/img/idea/2026.3/include_line_to_commit.png)

或者，将鼠标悬停在装订区域，选择或清除您希望包含在提交中或排除在提交中的行旁边的复选框。

5. 点击   提交  。 未选择的更改将保留在当前变更列表中，以便您可以单独提交。

Procedure: 从编辑器提交选定的更改

如果您已经提交了更改，然后发现忘记了一些内容，您可以直接从编辑器快速提交任何更新。

1. 当您在编辑器中更改文件时，请点击边栏中的相应 [更改标记](adding-files-to-version-control.html#track_changes)。

> **Note:**
> 如果装订区域中没有更改标记，请确保已在   版本控制 | 确认 | 边距  设置页面 `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS))启用   在装订区域中高亮显示修改的行  选项。

2. 在出现的工具栏中，输入提交消息并点击 ![](https://resources.jetbrains.com.cn/help/img/idea/2026.3/intellij.platform.vcs.impl.icons.CommitInline.svg)   提交此更改  。

![内联提交字段](https://resources.jetbrains.com.cn/help/img/idea/2026.3/inline_commit.png)

在提交消息字段中点击 ![](https://resources.jetbrains.com.cn/help/img/idea/2026.3/intellij.platform.vcs.impl.icons.AmendInline.svg)   修正提交  ，以将本地更改追加到最新提交。

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

1. 当您在编辑器中更改文件时，请点击边栏中的相应 [更改标记](adding-files-to-version-control.html#track_changes)。

> **Note:**
> 如果装订区域中没有更改标记，请确保已在   版本控制 | 确认 | 边距  设置页面 `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS))启用   在装订区域中高亮显示修改的行  选项。

2. 在出现的工具栏中，选择修改后的代码块的目标更改列表（或创建一个新的更改列表）：

![部分提交变更列表](https://resources.jetbrains.com.cn/help/img/idea/2026.3/partial_commit_changelists.png)

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

### 自定义查看本地更改的方式

IntelliJ IDEA 具有不同设置，可用于自定义提交前查看本地更改的工作流程。

Procedure: 自定义提交工具窗口

提交   工具窗口（ `Alt+0` (Windows), `⌘ 0` (macOS), `⌘ 0` (IntelliJ IDEA Classic (macOS)), `⌘ 0` (macOS System Shortcuts), `Alt+0` (XWin), `Alt+0` (GNOME), `Alt+0` (KDE), `Alt+0` (Emacs), `Alt+0` (Sublime Text), `⌘ 0` (Sublime Text (macOS)), `Alt+0` (Visual Studio), `Alt+0` (Visual Studio (macOS)), `Alt+0` (NetBeans), `Alt+0` (Eclipse), `⌘ 0` (Eclipse (macOS)) ）的位置和行为可以根据首选工作流程更改。

* 提交接口可以作为单独窗口打开，该窗口看起来像对话框，但仍为非阻塞(或非模态)。

在   提交   工具窗口（ `Alt+0` (Windows), `⌘ 0` (macOS), `⌘ 0` (IntelliJ IDEA Classic (macOS)), `⌘ 0` (macOS System Shortcuts), `Alt+0` (XWin), `Alt+0` (GNOME), `Alt+0` (KDE), `Alt+0` (Emacs), `Alt+0` (Sublime Text), `⌘ 0` (Sublime Text (macOS)), `Alt+0` (Visual Studio), `Alt+0` (Visual Studio (macOS)), `Alt+0` (NetBeans), `Alt+0` (Eclipse), `⌘ 0` (Eclipse (macOS)) ）中，点击 ![](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.expui.general.moreVertical.svg)   选项   并选择  `视图模式 | 窗口` 。 若要始终将窗口保持在 IDE 前面，请选择  `视图模式 | 浮动` 。

> **Tip:**
> 如果您不希望在提交更改后关闭   提交   工具窗口，请点击 ![](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.expui.general.moreVertical.svg)   选项  ，并清除   提交后关闭工具窗口   选项。
>
>
>
> 或者，在  `设置 | 高级设置 | 版本控制`  中，清除   提交后自动关闭窗口/浮动模式下的提交工具窗口   复选框。

* 您可以将   提交   工具窗口设置为展示本地更改列表的窗口，并在准备提交更改时开启提交控件（通过 ![](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.expui.toolwindows.commit.png)   提交   或 `Ctrl+K` (Windows), `⌘ K` (macOS), `⌘ K` (IntelliJ IDEA Classic (macOS)), `⌘ K` (macOS System Shortcuts), `Ctrl+K` (XWin), `Ctrl+K` (GNOME), `Ctrl+K` (KDE), `Ctrl+K` (Emacs), `Ctrl+K` (Sublime Text), `Ctrl+K` (Sublime Text (macOS)), `Ctrl+Alt+K` (Visual Studio), `⌘ ⌥ ⇧ K` (Visual Studio (macOS)), `Ctrl+K` (NetBeans), `Ctrl+K` (Eclipse), `Ctrl+K` (Eclipse (macOS))）。

在  `设置 | 高级设置 |版本控制`  中，选中   切换提交控制项组   复选框。

* 提交   工具窗口可以成为   本地更改   选项卡，该选项卡位于   日志   选项卡中的   Git   工具窗口 `Alt+9` (Windows), `⌘ 9` (macOS), `⌘ 9` (IntelliJ IDEA Classic (macOS)), `⌘ 9` (macOS System Shortcuts), `Alt+9` (XWin), `Alt+9` (GNOME), `Alt+9` (KDE), `Alt+9` (Emacs), `Alt+9` (Sublime Text), `⌘ 9` (Sublime Text (macOS)), `Alt+9` (Visual Studio), `⌘ 9` (Visual Studio (macOS)), `Alt+9` (NetBeans), `Alt+9` (Eclipse), `⌘ 9` (Eclipse (macOS)) 内。

在  `设置 | 高级设置 | 版本控制`  中，清除   启用提交工具窗口   复选框。

> **Tip:**
> 如果开启   切换提交控制项组   选项并关闭   启用提交工具窗口   选项，   提交   选项卡将如下所示：
>
>
>
> ![带有提交选项卡且切换模式已开启的 Git 工具窗口](https://resources.jetbrains.com.cn/help/img/idea/2026.3/commit_tab_toggle_mode.png)

Procedure: 自定义差异查看器行为

1. 在   提交   工具窗口（ `Alt+0` (Windows), `⌘ 0` (macOS), `⌘ 0` (IntelliJ IDEA Classic (macOS)), `⌘ 0` (macOS System Shortcuts), `Alt+0` (XWin), `Alt+0` (GNOME), `Alt+0` (KDE), `Alt+0` (Emacs), `Alt+0` (Sublime Text), `⌘ 0` (Sublime Text (macOS)), `Alt+0` (Visual Studio), `Alt+0` (Visual Studio (macOS)), `Alt+0` (NetBeans), `Alt+0` (Eclipse), `⌘ 0` (Eclipse (macOS)) ）中，有一个已更改文件列表。 双击已更改的文件可以打开差异查看器或源文件。

点击 ![](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.expui.general.moreVertical.svg)   选项  ，选择   双击时显示  ，然后选择首选选项：

* 差异 ：始终在双击更改的文件时打开差异查看器，以便您查看更改内容。

* 源 可始终打开文件本身，以便进行编辑。

2. 您还可以通过以下设置将差异查看器设置为在编辑器中打开或在单独的窗口中打开：

* 在差异查看器中，点击工具栏上的 ![](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.expui.general.settings.svg) 设置 ，然后选择 在单独窗口中显示差异 。

* 在 `设置 | 高级设置 | 版本控制` 中，清除 作为编辑器标签页打开差异 复选框。

### 使用 Git 暂存区提交更改

如果您更习惯于 [暂存](https://git-scm.com/docs/git-add)更改以进行提交，而不是使用 [更改列表](managing-changelists.html)（其中修改的文件会自动暂存），请按 `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS))打开设置并选择   版本控制 | Git  ，然后选中   启用暂存区  复选框。

提交  工具窗口现在将如下所示：

![Git 暂存区](https://resources.jetbrains.com.cn/help/img/idea/2026.3/git_staging_area.png)

使用暂存区可以轻松地分别提交对同一文件的更改（包括重叠的更改），并且无需从编辑器切换焦点即可查看哪些更改已暂存。

> **Note:**
> 当从使用更改列表切换到 Git 暂存区时，所有现有更改列表都会被保存。 您可以在两种模式之间切换而不会丢失更改。

Procedure: 准备提交的更改

1. 请执行以下操作之一：

* 若要暂存整个文件，请在 提交 工具窗口（ `Alt+0` (Windows), `⌘ 0` (macOS), `⌘ 0` (IntelliJ IDEA Classic (macOS)), `⌘ 0` (macOS System Shortcuts), `Alt+0` (XWin), `Alt+0` (GNOME), `Alt+0` (KDE), `Alt+0` (Emacs), `Alt+0` (Sublime Text), `⌘ 0` (Sublime Text (macOS)), `Alt+0` (Visual Studio), `Alt+0` (Visual Studio (macOS)), `Alt+0` (NetBeans), `Alt+0` (Eclipse), `⌘ 0` (Eclipse (macOS)) ）中选择此文件，然后点击其右侧的 !["添加"按钮](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.expui.general.add.svg) 或按 `Ctrl+Alt+A` (Windows), `⌘ ⌥ A` (macOS), `⌘ ⌥ A` (IntelliJ IDEA Classic (macOS)), `⌘ ⌥ A` (macOS System Shortcuts), `Ctrl+Alt+A` (XWin), `Ctrl+Alt+A` (GNOME), `Ctrl+Alt+A` (KDE), `Ctrl+Alt+A` (Emacs), `Ctrl+Alt+A` (Sublime Text), `⌘ ⌥ A` (Sublime Text (macOS)), `Ctrl+Alt+A` (Visual Studio), `⌘ ⌥ A` (Visual Studio (macOS)), `Ctrl+Alt+A` (NetBeans), `Ctrl+Alt+A` (Eclipse), `⌘ ⌥ A` (Eclipse (macOS))。 ![从提交工具窗口中暂存](https://resources.jetbrains.com.cn/help/img/idea/2026.3/git_stage_from_toolwindow.png)

* 要将文件内的特定片段暂存，请在编辑器中点击修改片段旁边页边空白中的 [更改标记](adding-files-to-version-control.html#track_changes)，然后点击 阶段 。 ![从编辑器更改阶段](https://resources.jetbrains.com.cn/help/img/idea/2026.3/git_stage_from_editor.png) 在编辑器中，已暂存的更改（包括从 IntelliJ IDEA 外暂存的更改）标记为空心的更改标记： ![暂存更改的滚动条标记](https://resources.jetbrains.com.cn/help/img/idea/2026.3/git_staged_marker.png)

* 要暂存粒度较细的更改，例如单行而不是代码块，甚至是单行中的若干更改之一，请在 提交 工具窗口( `Alt+0` (Windows), `⌘ 0` (macOS), `⌘ 0` (IntelliJ IDEA Classic (macOS)), `⌘ 0` (macOS System Shortcuts), `Alt+0` (XWin), `Alt+0` (GNOME), `Alt+0` (KDE), `Alt+0` (Emacs), `Alt+0` (Sublime Text), `⌘ 0` (Sublime Text (macOS)), `Alt+0` (Visual Studio), `Alt+0` (Visual Studio (macOS)), `Alt+0` (NetBeans), `Alt+0` (Eclipse), `⌘ 0` (Eclipse (macOS)))中选择包含该更改的文件，然后从上下文菜单中选择 比较 HEAD、暂存和本地版本 。 这将打开一个三方 [差异查看器](differences-viewer.html)，左窗格显示版本库版本，右窗格显示本地版本，中间窗格是一个功能齐全的编辑器，您可以在其中进行想要暂存的更改。 ![交互式分阶段更改](https://resources.jetbrains.com.cn/help/img/idea/2026.3/git_stage_interactively.png)

2. 准备就绪后，请按照 [本地提交更改](#commit_tool_window)中的描述提交更改。

## 将更改推送到远程存储库

推送更改之前：

* [与远程同步](sync-with-a-remote-repository.html)，并确保本地仓库副本为最新，以避免冲突。

* 在 日志 选项卡的 Git 工具窗口 `Alt+9` (Windows), `⌘ 9` (macOS), `⌘ 9` (IntelliJ IDEA Classic (macOS)), `⌘ 9` (macOS System Shortcuts), `Alt+9` (XWin), `Alt+9` (GNOME), `Alt+9` (KDE), `Alt+9` (Emacs), `Alt+9` (Sublime Text), `⌘ 9` (Sublime Text (macOS)), `Alt+9` (Visual Studio), `⌘ 9` (Visual Studio (macOS)), `Alt+9` (NetBeans), `Alt+9` (Eclipse), `⌘ 9` (Eclipse (macOS))中审查本地提交：在左侧 [分支窗格](log-tab.html#BranchesPane)的 本地 节点中选择你的分支，然后在工具窗口中央的 [提交窗格](log-tab.html#CommitsPane)中查看你的提交列表。

IntelliJ IDEA 允许您将更改从任何分支上传到其 [tracked branch](https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches)或任何其他远程分支。

Procedure:

1. 请执行以下操作之一：

* 要从 当前分支 推送更改，请按 `Ctrl+Shift+K` (Windows), `⌘ ⇧ K` (macOS), `⌘ ⇧ K` (IntelliJ IDEA Classic (macOS)), `⌘ ⇧ K` (macOS System Shortcuts), `Ctrl+Shift+K` (XWin), `Ctrl+Shift+K` (GNOME), `Ctrl+Shift+K` (KDE), `Ctrl+Shift+K` (Emacs), `Ctrl+Shift+K` (Sublime Text), `⌘ ⇧ K` (Sublime Text (macOS)), `Ctrl+Shift+K` (Visual Studio), `⌘ ⇧ K` (Visual Studio (macOS)), `Ctrl+Shift+K` (NetBeans), `Ctrl+Shift+K` (Eclipse), `⌘ ⇧ K` (Eclipse (macOS))或从主菜单中选择 `Git | 推送` 。

* 若要从具有远程的任意本地分支推送更改，请在 VCS 微件中选择此分支，然后从操作列表中选择 推送 。

* 如果有一些已经完成但尚不想推送到远程分支的提交，请在 日志 选项卡中，该选项卡位于 Git 工具窗口( `Alt+9` (Windows), `⌘ 9` (macOS), `⌘ 9` (IntelliJ IDEA Classic (macOS)), `⌘ 9` (macOS System Shortcuts), `Alt+9` (XWin), `Alt+9` (GNOME), `Alt+9` (KDE), `Alt+9` (Emacs), `Alt+9` (Sublime Text), `⌘ 9` (Sublime Text (macOS)), `Alt+9` (Visual Studio), `⌘ 9` (Visual Studio (macOS)), `Alt+9` (NetBeans), `Alt+9` (Eclipse), `⌘ 9` (Eclipse (macOS)))，选择要推送的最后一个提交，并从操作列表中选择 推送所有至此… 选项。

推送提交对话框   打开后显示所有 Git 仓库（针对多仓库项目），并列出自上次推送以来在每个仓库的当前分支中所做的所有提交。

![推送提交对话框](https://resources.jetbrains.com.cn/help/img/idea/2026.3/push_commits_dialog.png)

如果选择了   推送所有至此…   选项，将显示截至所选提交哈希的所有提交列表。

如果您有一个项目使用多个未同步控制的仓库，则默认情况下只会选择当前仓库（有关启用同步仓库控制的更多信息，请参阅 [版本控制设置：Git](settings-version-control-git.html)）。

如果要修改推送的目标仓库，请点击仓库名称。 可以从列表中选择现有仓库，或点击   定义远程   以指定新远程仓库的名称和 URL。

> **Tip:**
> 您可以针对所选提交按下 `Ctrl+Q` (Windows), `F1` (macOS), `⌃ J` (IntelliJ IDEA Classic (macOS)), `⌘ I` (macOS System Shortcuts), `Ctrl+Q` (XWin), `Ctrl+Q` (GNOME), `Ctrl+Q` (KDE), `Ctrl+Q` (Emacs), `Ctrl+Q` (Sublime Text), `Ctrl+Q` (Sublime Text (macOS)), `Ctrl+K, I` (Visual Studio), `⌘ K, I` (Visual Studio (macOS)), `Ctrl+Q` (NetBeans), `Alt+Middle-Click` (Eclipse), `⌥ Middle-Click` (Eclipse (macOS)) 以显示其他信息，例如提交作者、时间、哈希、提交消息等。

2. 如果存储库中没有远程，将显示   定义远程   链接。 点击此链接，并在打开的对话框中指定远程名称和 URL。 它将被保存，您可以稍后通过  `Git | 管理远程` 进行编辑（有关更多信息，请参阅 [添加远程存储库](set-up-a-git-repository.html#add-remote)）。

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

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

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

> **Tip:**
> 还可以对所选文件按 `Enter` (Windows), `⏎` (macOS), `⏎` (IntelliJ IDEA Classic (macOS)), `⏎` (macOS System Shortcuts), `Enter` (XWin), `Enter` (GNOME), `Enter` (KDE), `Enter` (Emacs), `Enter` (Sublime Text), `⏎` (Sublime Text (macOS)), `Enter` (Visual Studio), `⏎` (Visual Studio (macOS)), `Enter` (NetBeans), `Enter` (Eclipse), `⏎` (Eclipse (macOS)) 切换到编辑模式。

如果某个提交的作者与当前用户不同，该提交将以星号标记。

> **Tip:**
> 如果您选择整个存储库，右侧窗格将列出所有提交中的所有文件。
>
>
>
> 如果同一文件在多个提交中被修改，当您选择这些提交或整个存储库时，它只会被列出一次；如果您为该文件调用 [差异查看器](differences-viewer.html)，所有更改将被合并在一起。

5. 选中   推送标签   复选框，以随提交一起推送标记。

默认情况下，执行  `推送`  操作时，标记不会发送到远程仓库，除非选中此复选框。

* 如果想要推送所有标记，包括不属于即将推送的所选分支的标记，请选择 全部 (等同于 `git push --tags` )。

* 选择 当前分支 以推送仅属于您即将推送的选定分支的标签（等同于 `git push --follow-tags` 自 Git 1.8.3 以来可用）。

6. 准备好后点击   推送   按钮并从下拉菜单中选择您要执行的操作：   推送   或   强制推送  （相当于  `git push --force-with-lease` ）。

仅当当前分支未列在   受保护分支   字段中时，才可使用这些选项（请参阅 [版本控制设置：Git](settings-version-control-git.html)）；否则，您只能执行  `推送`  操作。

Procedure: 如果推送被拒绝，请更新您的工作副本

如果由于您的工作副本已过时而拒绝了   推送  ，则 IntelliJ IDEA 会显示   推送被拒绝   对话框，前提是在   设置   对话框的 [Git 设置](settings-version-control-git.html) 页面中没有选择   如果当前分支的推送被拒绝，则自动更新   选项。 执行以下操作：

1. 如果项目使用多个 Git 仓库，请指定要更新哪些仓库。 如果您想更新所有存储库，无论   推送   是否被拒绝，请选择   更新所有仓库   选项。 如果未选中此选项，则只会更新受影响的仓库。

2. 如果您希望 IntelliJ IDEA 在下一次使用此对话框中选择的方法更新时因推送被拒绝而静默地应用更新程序，请选择   记住更新方法选择并在未来静默更新   选项。

在您离开此对话框后，   如果当前分支的推送被拒绝，则自动更新   复选框将在 [Git 设置](settings-version-control-git.html) 页面的   设置   对话框中被选中，并且应用的更新方法将成为默认方法。

要更改更新策略，请取消选择此选项，以在当前分支的推送被拒绝时调用   推送被拒绝  对话框，应用不同的更新流程，并再次选择   记住更新方法选择  选项。

3. 通过分别点击   变基   或   合并   按钮来选择更新方法。

> **Tip:**
> 如需了解哪种方法更适合您的需求，请参阅 [合并分支](apply-changes-from-one-branch-to-another.html#merge) 和 [变基分支（git-rebase）](apply-changes-from-one-branch-to-another.html#rebase-branch)。

### 我什么时候需要使用force push？

当您运行   推送   时，如果远程仓库有您尚未获取的更改，并且您将用本地仓库的副本覆盖那些更改，Git 将拒绝完成操作。 通常，您需要执行 [pull](sync-with-a-remote-repository.html#pull)来与远程同步，然后再用您的更改更新它。

`git push --force`  命令会禁用此检查，并允许您覆盖远程存储库，从而清除其历史并导致数据丢失。 在后台，当您选择强制推送时，IntelliJ IDEA 会执行  `git push --force-with-lease`  操作，这是一个更安全的选项，可以帮助您确保不会覆盖其他人的提交（有关推送选项的更多详细信息，请参阅 [git push](https://git-scm.com/docs/git-push)）。

仍可能需要执行  `git push --force`  的一种情况是，您对已推送的分支进行变基，然后希望将其推送到远程服务器。 在这种情况下，当您尝试推送时，Git 将拒绝您的更改，因为远程引用不是本地引用的祖先。 如果在这种情况下执行   pull  ，您将得到该分支的两个副本，随后需要将其合并。

