# 教程：在 IntelliJ IDEA 中开始使用 Git

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

> **TL;DR**
> 所需插件：   Git   和   GitHub  （默认捆绑并启用）

本教程将介绍如何在 IntelliJ IDEA 中执行最常用的 Git 操作。

将学习如何为项目创建 Git 仓库、在 GitHub 上共享、提交并推送更改、创建并合并分支、解决合并冲突，以及查看文件历史记录。

## 步骤 1。 创建一个带有 Git 存储库的新项目

在本教程中，我们将创建一个简单的 project，将其共享到 GitHub，并执行一些 Git 任务。

Procedure:

1. 启动 IntelliJ IDEA，然后在   欢迎   屏幕上点击   新建 项目  。

> **Tip:**
> 如果当前已在 IntelliJ IDEA 中打开另一个 project，请从主菜单中选择  `文件 | 新建 项目` 。

2. 在   新建项目   向导中，从   新建项目   列表中选择 project 类型（在本教程中，我们将创建一个   空 项目  ），指定 project 的名称（例如  `gitdemo` ），并提供位置路径。

请选择   创建 Git 仓库  选项。

![新建项目](https://resources.jetbrains.com/help/img/idea/2026.3/gitdemo_empty_project.png)

3. 点击   创建  。 新的 project 将在 IntelliJ IDEA 中打开。

> **Note:**
> IntelliJ IDEA 会自动检测您的计算机上是否安装了 Git。 如果 IDE 无法找到 Git 可执行文件，它会建议下载。

将收到一条通知，提示已为 project 创建本地 Git 仓库。

创建带有 Git 仓库的新项目后，用于处理 Git 的专用工具窗口将可用。

![Git 集成已启用](https://resources.jetbrains.com/help/img/idea/2026.3/git_integration_enabled.png)

1.  VCS 微件： [管理 Git 分支](manage-branches.html)并执行基本的 Git 操作。

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)) 或  `视图 | 工具窗口 | 提交` ）： [审查本地更改](adding-files-to-version-control.html) 并 [提交](#commit_and_push) 到本地 Git 存储库。

3.    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` ）： [使用 Git 日志](investigate-changes.html) 和 [更多](version-control-tool-window.html)。

> **Tip:**
> 在   提交   工具窗口中，有一个新创建的 IDE 配置文件列表（例如  `.xml`  和  `.iml` ），以及一个  `.gitignore`  文件。 我们将直接提交它们，而不直接处理它们。 虽然这对于个人项目是标准做法，但请记住，大型团队通常会更有选择性地共享这些文件，以避免开发者之间的设置发生冲突。 有关更多详细信息，请参阅 [官方 Git 文档](https://git-scm.com/docs/gitignore)和 [将文件排除在版本控制之外（忽略）](set-up-a-git-repository.html#ignore-files)。

## 步骤 2。 将文件添加到 Git

启用 Git 集成后，IntelliJ IDEA 会显示哪些文件已被修改、哪些新文件已添加到 Git，以及哪些文件未由 Git 跟踪。

要了解其工作方式，让我们创建一个简单的  `README.md`  文件，添加一段简短的说明，并将其添加到 Git。

Procedure:

1. 在   项目   工具窗口（ `Alt+1` (Windows), `⌘ 1` (macOS), `⌘ 1` (IntelliJ IDEA Classic (macOS)), `⌘ 1` (macOS System Shortcuts), `Alt+1` (XWin), `Alt+1` (GNOME), `Alt+1` (KDE), `Alt+1` (Emacs), `Alt+1` (Sublime Text), `⌘ 1` (Sublime Text (macOS)), `Ctrl+Alt+L` (Visual Studio), `⌘ ⌥ L` (Visual Studio (macOS)), `Ctrl+1` (NetBeans), `Alt+1` (Eclipse), `Alt+1` (Eclipse (macOS))）中，选择 project 目录（  `gitdemo` ）。

2. 在工具窗口工具栏上点击 ![](https://resources.jetbrains.com/help/img/idea/2026.3/app-client.expui.general.add.svg)   新建文件或目录  （或按 `Alt+Insert` (Windows), `⌘ N` (macOS), `⌃ N` (IntelliJ IDEA Classic (macOS)), `⌘ N` (macOS System Shortcuts), `Alt+Insert` (XWin), `Alt+Insert` (GNOME), `Alt+Insert` (KDE), `Alt+Insert` (Emacs), `Ctrl+N` (Sublime Text), `⌘ N` (Sublime Text (macOS)), `Ctrl+N` (Visual Studio), `⌘ N` (Visual Studio (macOS)), `Alt+Insert` (NetBeans), `Alt+Insert` (Eclipse), `⌘ N` (Eclipse (macOS))），然后从列表中选择   文件  。 将文件命名为  `README.md` ，然后按   `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))  。

3. 在打开的对话框中，点击   添加  ，以便 Git 开始跟踪该文件。

![将新文件添加到 Git](https://resources.jetbrains.com/help/img/idea/2026.3/add_file_to_git.png)

现在，当您修改此文件时，IntelliJ IDEA 会自动为任何更改建立索引（换句话说，将其添加到 [Git staging area](https://git-scm.com/docs/git-add)），因此您无需手动执行此操作。

> **Tip:**
> 如果不小心关闭此对话框，可以在   项目   工具窗口（ `Alt+1` (Windows), `⌘ 1` (macOS), `⌘ 1` (IntelliJ IDEA Classic (macOS)), `⌘ 1` (macOS System Shortcuts), `Alt+1` (XWin), `Alt+1` (GNOME), `Alt+1` (KDE), `Alt+1` (Emacs), `Alt+1` (Sublime Text), `⌘ 1` (Sublime Text (macOS)), `Ctrl+Alt+L` (Visual Studio), `⌘ ⌥ L` (Visual Studio (macOS)), `Ctrl+1` (NetBeans), `Alt+1` (Eclipse), `Alt+1` (Eclipse (macOS))）中将该文件添加到 Git：右键点击该文件并选择  `Git | 添加` 。

4. 将以下文本添加到新创建的文件：

```MARKDOWN
# Tutorial

This is a tutorial where you will learn how to create Git
repositories from your projects and share them on GitHub.


```

按 `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))，确保在此文本后在文件中创建新行。 稍后我们将使用它来学习如何解决合并冲突。

![文本已添加到文件](https://resources.jetbrains.com/help/img/idea/2026.3/git_readme_md_added.png)

现在，新文件由 Git 跟踪，并已添加到   提交   工具窗口（ `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))）中的   更改   更改列表。

![包含新建文件的 Changes 更改列表](https://resources.jetbrains.com/help/img/idea/2026.3/file_added_to_git.png)

更改   更改列表可帮助您管理尚未提交到 Git 存储库的本地更改。 详细了解请参阅 [将更改分组到changelist中](managing-changelists.html)。

## 步骤 3。 将项目提交到本地 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))）中，通过点击文件旁边的复选框来选择要提交的文件。

> **Tip:**
> 在   提交   工具窗口（ `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))）中，还可以预览新增和修改的文件、使用高级提交选项、在提交中添加或排除文件，以及 [更多](commit-and-push-changes.html)。

> **Tip:**
> 在   提交   工具窗口中，有一个新创建的 IDE 配置文件列表（例如  `.xml`  和  `.iml` ），以及一个  `.gitignore`  文件。 我们将直接提交它们，而不直接处理它们。 虽然这对于个人项目是标准做法，但请记住，大型团队通常会更有选择性地共享这些文件，以避免开发者之间的设置发生冲突。 有关更多详细信息，请参阅 [官方 Git 文档](https://git-scm.com/docs/gitignore)和 [将文件排除在版本控制之外（忽略）](set-up-a-git-repository.html#ignore-files)。

2. 输入首次提交的消息（例如  `Add a new project to Git` ）：

![提交工具窗口中的提交消息](https://resources.jetbrains.com/help/img/idea/2026.3/commit_message.png)

3. 点击   提交  。

如果您此前未在计算机上使用 Git，在提交更改之前，IntelliJ IDEA 将要求您输入您的用户名和电子邮件地址。 Git 会将此信息存储在  `.git/config`  中，以便将您标识为提交的作者。

IntelliJ IDEA 会在提交成功后通知您：

![“文件已提交”通知](https://resources.jetbrains.com/help/img/idea/2026.3/committed_file.png)

> **Tip:**
> 可以通过点击通知弹出窗口中的   编辑提交消息   来编辑提交消息。 也可以使用   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))）对任何提交执行相同操作。 在   日志   选项卡中，选择一个分支，然后右键点击所需提交并选择   编辑提交消息  。

## 步骤 4。 在 GitHub 上共享项目

若要让 project 可供其他贡献者使用，需要将其发布到远程仓库，例如发布到 [GitHub](https://github.com) 或 [GitLab](https://about.gitlab.com/)。 IntelliJ IDEA 提供与这两个平台的集成。 详细信息请参阅 [管理托管在 GitHub 上的项目](manage-projects-hosted-on-github.html) 和 [管理托管在 GitLab 上的项目](clone-gitlab-project.html)。

在本教程中，我们将把 project 发布到 GitHub。

> **Note:**
> 此功能性依赖于 [GitHub](https://plugins.jetbrains.com/plugin/13115-github) 插件，需要安装并启用该插件。 更多信息请参阅 [打开插件设置](managing-plugins.html#open-plugin-settings)。

Procedure:

1. 在主菜单中，转到  `Git | GitHub | 在 GitHub 上共享项目`   `Git | GitHub | 在 GitHub 上共享项目` 。

2. 在打开的对话框中，可以更改仓库名称（默认情况下，它与 project 名称相同）、远程的名称（默认为  `origin` ）、选择仓库类型（公开或私有），并根据需要添加一些描述。

保留   代码库名称   和   远程   字段中的默认值。 选择   私有   选项。

如果您尚未在 GitHub 上注册，请点击   添加帐户  ，然后点击   通过 GitHub 登录  。

![在 GitHub 上共享项目对话框](https://resources.jetbrains.com/help/img/idea/2026.3/add_gh_account.png)

在打开的浏览器窗口中输入您的 GitHub 凭据，或在其中创建一个新帐户。 返回 IntelliJ IDEA 后，   共享方式   字段将显示您的帐户名称。

> **Tip:**
> 您可以在  `设置 | 版本控制 | GitHub`  中使用令牌更改 GitHub 帐户或添加新帐户。 详细了解请参阅 [管理多个 GitHub 帐户](set-up-a-github-account.html#manage_accounts)。

3. 点击   分享  。 项目成功发布到 GitHub 后，将显示以下通知：

![仓库已在 GitHub 上共享](https://resources.jetbrains.com/help/img/idea/2026.3/github_shared.png)

点击通知中的链接以在 GitHub 上打开仓库。

## 步骤 5。 创建新分支。？？?

您可能需要创建一个独立的分支，例如，当您在开发新功能且不希望在测试之前让更改进入主分支时。

Procedure:

1. 按 `Ctrl+T` (Windows), `⌘ T` (macOS), `⌘ T` (IntelliJ IDEA Classic (macOS)), `⌘ T` (macOS System Shortcuts), `Ctrl+T` (XWin), `Ctrl+T` (GNOME), `Ctrl+T` (KDE), `Ctrl+T` (Emacs), `Ctrl+T` (Sublime Text), `Ctrl+T` (Sublime Text (macOS)), `Ctrl+Alt+W` (Visual Studio), `⌘ ⌥ W` (Visual Studio (macOS)), `Ctrl+T` (NetBeans), `Ctrl+T` (Eclipse), `Ctrl+T` (Eclipse (macOS)) 或转到   Git | 更新项目  。 在打开的   更新项目   对话框中，保留默认合并选项。 点击   OK   以拉取当前分支的最新版本。

![“更新项目”对话框将打开](https://resources.jetbrains.com/help/img/idea/2026.3/git-update-project-popup.png)

2. VCS 微件显示当前分支的名称 —  `main` 。 点击它，在   本地   节点中选择  `main`  分支，然后点击   从 'main' 新建分支  。

![Git 分支菜单](https://resources.jetbrains.com/help/img/idea/2026.3/branch_menu.png)

3. 在打开的对话框中，指定分支名称，例如  `new_feature` ，并选择   检出分支   选项以立即切换到新分支。

![新建 Git 分支](https://resources.jetbrains.com/help/img/idea/2026.3/new_branch.png)

> **Tip:**
> 如果当前分支中存在一些未提交的更改，您需要在切换到其他分支之前先提交、还原或搁置它们。 了解更多信息请参见 [在分支之间切换](manage-branches.html#switch-branches)。

现在，您已切换到新创建的分支：

![已切换到新分支](https://resources.jetbrains.com/help/img/idea/2026.3/changed_branch.png)

## 步骤 6。 进行并查看更改

Procedure:

1. 向 project 添加一个新文件（例如，  `git-features.md` ），当 IntelliJ IDEA 建议将其添加到 Git 版本控制时，点击   添加  。

之后，打开  `README.md`  文件，并将现有文本替换为新的描述：

```MARKDOWN
# Demo

This is a demo project where you will learn how to commit and
push changes, create and merge branches.

Refer to `git-features.md` to check the list of Git operations.

```

在   项目   工具窗口（ `Alt+1` (Windows), `⌘ 1` (macOS), `⌘ 1` (IntelliJ IDEA Classic (macOS)), `⌘ 1` (macOS System Shortcuts), `Alt+1` (XWin), `Alt+1` (GNOME), `Alt+1` (KDE), `Alt+1` (Emacs), `Alt+1` (Sublime Text), `⌘ 1` (Sublime Text (macOS)), `Ctrl+Alt+L` (Visual Studio), `⌘ ⌥ L` (Visual Studio (macOS)), `Ctrl+1` (NetBeans), `Alt+1` (Eclipse), `Alt+1` (Eclipse (macOS))）和编辑器选项卡中，IntelliJ IDEA 会对文件应用不同颜色：蓝色表示已修改，绿色表示新添加。 此外，在已修改文件的装订区域中，带颜色的更改标记会显示在已修改行的旁边。

![编辑器和 Project 工具窗口中的更改](https://resources.jetbrains.com/help/img/idea/2026.3/vcs_changes.png)

2. 要查看具体更改了哪些内容，请点击装订区域标记：

![彩色更改标记](https://resources.jetbrains.com/help/img/idea/2026.3/change_marker.png)

若要在单独的编辑器选项卡中查看差异，请点击 ![显示差异图标](https://resources.jetbrains.com/help/img/idea/2026.3/app-client.expui.vcs.diff.svg)   显示行差异  :

![范围差异](https://resources.jetbrains.com/help/img/idea/2026.3/diff_for_range.png)

3. 转到   提交   工具窗口（ `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/help/img/idea/2026.3/local_changes.png)

了解更多信息请参见 [调查 Git 仓库中的更改](investigate-changes.html)。

## 步骤 7。 提交并推送更改

在我们的  `new_feature`  分支中，我们创建了一个新的  `git-features.md`  文件，并修改了  `README.md`  文件。 让我们提交更改并将其推送到远程存储库。

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))）中，选中两个文件旁边的复选框，并输入提交消息（例如  `更新 README.md` ）。

输入提交消息时，可以对 project 文件名称使用 [自动补全](auto-completing-code.html)（ `Ctrl+Space` (Windows), `⌃ Space` (macOS), `⌃ Space` (IntelliJ IDEA Classic (macOS)), `⌃ Space` (macOS System Shortcuts), `Ctrl+Space` (XWin), `Ctrl+Space` (GNOME), `Ctrl+Space` (KDE), `Alt+/` (Emacs), `Ctrl+Space` (Sublime Text), `⌃ Space` (Sublime Text (macOS)), `Ctrl+Space` (Visual Studio), `⌃ Space` (Visual Studio (macOS)), `Ctrl+Space` (NetBeans), `Ctrl+Space` (Eclipse), `⌃ Space` (Eclipse (macOS))）:

![提交消息中的补全](https://resources.jetbrains.com/help/img/idea/2026.3/commit_completion.png)

点击   提交  。

> **Tip:**
> 若要撤消最新的未推送提交，请在   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))）的   日志   选项卡上右键点击它，并选择   撤销提交  。 有关更多信息，请参阅 [撤销上一次提交](undo-changes.html#revert-last-commit)。

2. 按 `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 | 推送` ，以将更改推送到远程仓库。   推送提交   对话框将打开。 在此，您可以查看所有将要推送的提交以及所有受影响的文件。

在推送更改之前，您可以查看每个文件的差异。 为此，请右键点击文件并选择 ![显示差异图标](https://resources.jetbrains.com/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))：

![推送提交](https://resources.jetbrains.com/help/img/idea/2026.3/push_commits.png)

3. 点击   推送  。

之后，IntelliJ IDEA 会将所有更改推送到 GitHub 上的远程仓库。

> **Tip:**
> 若要还原已推送的提交，请在   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))）的   日志   选项卡上右键点击它，并选择   撤销提交  。 有关更多信息，请参阅 [恢复已推送的提交](undo-changes.html#revert-commit)。

## 步骤 8。 合并分支并解决冲突

可以通过多种方式将更改从一个分支应用到另一个分支，例如合并和变基分支、遴选提交、应用单独的更改或文件。 所有这些方法都在 [合并、变基或挑拣以应用更改](apply-changes-from-one-branch-to-another.html) 中有详细说明。

在本教程中，您将学习如何合并两个分支。 我们还将有意制造一次合并冲突，以学习如何使用 IntelliJ IDEA 的合并工具轻松解决合并冲突。

Procedure: 合并分支

1. 在   [Git 分支](#git_branches_menu)   微件中选择  `main`  分支，然后点击   检出  。

> **Tip:**
> 如果当前分支中存在一些未提交的更改，您需要在切换到其他分支之前先提交、还原或搁置它们。 了解更多信息请参见 [在分支之间切换](manage-branches.html#switch-branches)。

2. 在 [第 6 步](#changes) 中，我们在  `new_feature`  分支修改了  `README.md`  文件。 现在，让我们在  `main`  分支中再次更新文本，以模拟合并冲突：

```MARKDOWN
# Tutorial

This is a test project where you will learn how to work
with the most popular Git operations.

```

按 `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))，确保在此文本后在文件中创建新行，就像在 [步骤 2](#new-line-in-editor) 中所做的那样。 这有助于稍后解决冲突。

3. 按照 [第 7 步](#commit_and_push) 中的说明提交并推送更改。 编写提交消息（例如  `Add information about Git tutorial` ）。

4. 在 VCS 微件的   本地   节点中，选择  `new_feature`  并点击   将 'new_feature' 合并到 'main'  。

![VCS 微件菜单中的合并选项](https://resources.jetbrains.com/help/img/idea/2026.3/merge_into_main_option.png)

由于我们在不同分支中对同一文件进行了更改，因此会出现   冲突   对话框。

![冲突对话框](https://resources.jetbrains.com/help/img/idea/2026.3/conflicts_dialog.png)

Procedure: 解决冲突

1. 在   冲突   对话框中，有多个用于解决冲突的选项：

* 接受您的版本 ：保留当前分支中的更改。

* 接受对方的版本 ：应用您要合并到当前分支的分支中的更改。

* 合并 ：在专用对话框中手动解决冲突。

点击   合并  。 将打开   合并修订   对话框：

![解决冲突](https://resources.jetbrains.com/help/img/idea/2026.3/merge_revisions.png)

* 左侧窗格称为 来自 main 的更改 ，显示来自本地副本的只读更改。

* 右侧窗格称为 来自 new_feature 的更改 ，显示来自我们要合并到 `main` 的 `new_feature` 分支的只读传入更改。

* 中间窗格称为 结果 ，是一个功能齐全的编辑器，显示冲突解决的结果。

2. 在此对话框中，您可以点击 ![从左侧应用更改](https://resources.jetbrains.com/help/img/idea/2026.3/app.diff.applyNotConflictsLeft.svg)/ ![从右侧应用更改](https://resources.jetbrains.com/help/img/idea/2026.3/app.diff.applyNotConflictsRight.svg) 接受更改，点击 ![](https://resources.jetbrains.com/help/img/idea/2026.3/app.diff.remove.svg) 拒绝更改，并在中间的   结果   窗格中输入代码。 详细了解请参阅 [解决 Git 冲突](resolve-conflicts.html)。

让我们在左侧窗格中点击 ![从左侧应用更改](https://resources.jetbrains.com/help/img/idea/2026.3/app.diff.applyNotConflictsLeft.svg)，接受来自  `main`  的一项更改。 由于我们不需要来自  `new_feature`  的同一行更改，请在右侧窗格的红色冲突行中点击 ![移除](https://resources.jetbrains.com/help/img/idea/2026.3/app.diff.remove.svg) 以将其丢弃。

对于来自  `new_feature`  的其余非冲突更改，请在右侧窗格中点击 ![从右侧应用更改](https://resources.jetbrains.com/help/img/idea/2026.3/app.diff.applyNotConflictsRight.svg)。

在中间窗格中审查合并结果。 合并后的文本应如下所示：

```MARKDOWN
# Demo

This is a test project where you will learn how to work
with the most popular Git operations.

Refer to `git-features.md` to check the list of Git operations.

```

![冲突已解决](https://resources.jetbrains.com/help/img/idea/2026.3/conflicts_resolved.png)

3. 点击   应用  。

IntelliJ IDEA 会将  `new_feature`  分支合并到  `main`  分支。

4. 按 `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 | 推送` ，将更改推送到远程仓库。

可以在   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/help/img/idea/2026.3/git_log_tab.png)

在此，您还可以还原提交、将一个分支的更改拣选到另一个分支，等等。 有关更多详细信息，请参阅 [日志选项卡](log-tab.html)。

## 步骤 9。 查看历史记录

与其他人一起处理 project 时，可能会想知道此文件为何、何时以及如何被更改。

Procedure:

在  `main`  分支中，打开  `README.md`  文件。 要找出这些更改来自哪个提交，请执行以下操作之一：

* 在编辑器或   项目   工具窗口 ( `Alt+1` (Windows), `⌘ 1` (macOS), `⌘ 1` (IntelliJ IDEA Classic (macOS)), `⌘ 1` (macOS System Shortcuts), `Alt+1` (XWin), `Alt+1` (GNOME), `Alt+1` (KDE), `Alt+1` (Emacs), `Alt+1` (Sublime Text), `⌘ 1` (Sublime Text (macOS)), `Ctrl+Alt+L` (Visual Studio), `⌘ ⌥ L` (Visual Studio (macOS)), `Ctrl+1` (NetBeans), `Alt+1` (Eclipse), `Alt+1` (Eclipse (macOS))) 中右键点击该文件，然后选择  `Git | 显示历史` 。   Git   工具窗口的   历史记录   选项卡将打开：

![Git 文件历史记录](https://resources.jetbrains.com/help/img/idea/2026.3/git_history.png)

在此选项卡上，您可以查看影响该文件的所有提交，并找出您感兴趣的更改是在哪个提交中添加的。

* 在编辑器中，选择您要查看历史记录的代码片段，右键点击所选内容，然后选择  `Git | 显示所选内容的历史` 。 将打开   所选内容的历史记录   对话框：

![所选内容的 Git 历史记录](https://resources.jetbrains.com/help/img/idea/2026.3/history_for_selection.png)

在这里，您可以审查影响您所选代码的所有提交。

在 [调查 Git 仓库中的更改](investigate-changes.html) 中了解更多探索 Git 历史记录的方法。

## 总结

通过本教程，您已经学会了如何：

* [创建项目](#create-test-prj)并使用本地 Git 仓库

* [将文件添加到 Git](#add-files-to-git)并跟踪更改

* [提交更改](#add_to_git)以保存项目状态

* 在 GitHub 上 [共享项目](#github)

* [创建并切换](#new_branch)分支

* [合并分支](#merge)并 [解决冲突](#resolve)

* [查看并研究历史记录](#view_history)中的更改

## 后续步骤

如果您在本教程中没有找到如何执行某些特定的 Git 任务，请参阅 [Git](using-git-integration.html) 指南——其中介绍了 IDE 中提供的所有 Git 操作。

如果 project 未纳入 Git，仍然可以使用 [本地历史记录](local-history.html)功能跟踪和管理本地更改、回滚到特定的文件状态、还原已删除的文件等。

