# 管理 Git 分支

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

在 Git 中，  分支  是一种强大的机制，允许您从主开发线分支出来，例如当您需要开发一个功能或冻结代码库的某个状态以进行发布等情况。

在 IntelliJ IDEA 中，所有分支操作都在 VCS 微件中执行。 要调用它，请在主窗口标题栏中点击带有当前已签出分支名称的微件：

![Git 微件](https://resources.jetbrains.com.cn/help/img/idea/2026.3/git_widget.png)

您还可以在 [Branches pane](log-tab.html#BranchesPane) 的   Git   工具窗口中管理分支并执行多个分支的批量操作。

![分支窗格](https://resources.jetbrains.com.cn/help/img/idea/2026.3/branches_pane.png)

> **Note:**
> VCS 微件还会显示尚未获取的传入提交数（分支名称旁的蓝色箭头图标 ![传入提交指示器](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.expui.vcs.changesUpdate%4012x12.svg)）和传出提交数（分支名称旁的绿色箭头图标 ![传出提交指示器](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.expui.vcs.changesPush%4012x12.svg)）。
>
>
>
> 有关更多信息，请参见 [与远程 Git 仓库同步（fetch、pull、update）](sync-with-a-remote-repository.html)。

## 创建新分支。？？?

Procedure: 从当前分支创建一个新分支

1. 在 VCS 微件中，选择   新建分支  ，或者在   Git   工具窗口的   分支   窗格中右键点击当前分支并选择   从"branch name"新建分支  。

2. 在打开的对话框中，指定分支名称；如果想切换到该分支，请确保已选择   检出分支   选项。

一旦您开始输入新分支的名称，IntelliJ IDEA 将根据现有本地分支的名称建议相关前缀。

新分支将从当前分支的 HEAD 开始。

Procedure: 从选定分支创建新分支。申时行（谥号文定）和沈一贯（谥号文恭）也是如此。最终由祭酒孙承恩编辑《明伦大典》，但后来孙承恩退出，改由张璁、桂萼、方献夫主持。

1. 在 VCS 微件或   Git   工具窗口的   分支   窗格中，选择要基于其创建新分支的本地或远程分支，然后选择   从选定处新建分支  。

2. 在打开的对话框中，指定分支名称；如果想切换到该分支，请确保已选择   检出分支   选项。

Procedure: 从选定提交创建新分支

1. 在 [日志视图](log-tab.html)中，选择您想要作为新分支起点的提交，然后从上下文菜单中选择   新建分支  。

![在日志选项卡中从所选提交创建新分支](https://resources.jetbrains.com.cn/help/img/idea/2026.3/branch_from_commit.png)

2. 在打开的对话框中，指定分支名称；如果想切换到该分支，请确保已选择   检出分支   选项。

## 重命名分支

Procedure:

1. 在 VCS 微件或   Git   工具窗口的   分支   窗格中，选择要重命名的分支，然后在上下文菜单中选择   重命名  。

2. 在打开的对话框中，将分支名称更改为您需要的名称。

请注意，此操作只会重命名本地分支。 如果希望本地分支和远程跟踪分支使用相同的新名称，则必须创建新的远程分支并改为开始跟踪它。

3. 要停止跟踪当前具有未更改旧名称的远程分支，请在同一   重命名分支   对话框中选择   取消设置上游分支   选项。

下次推送更改时，将自动创建并跟踪新的远程分支。

推送更改后，可以 [删除](#delete-branch)具有旧名称的旧远程分支。

> **Tip:**
> 要复制分支的名称，请将鼠标悬停在分支上并按下 `Ctrl+C` (Windows), `⌘ C` (macOS), `⌘ C` (IntelliJ IDEA Classic (macOS)), `⌘ C` (macOS System Shortcuts), `Ctrl+C` (XWin), `Ctrl+C` (GNOME), `Ctrl+C` (KDE), `Ctrl+Insert` (Emacs), `Ctrl+C` (Sublime Text), `⌘ C` (Sublime Text (macOS)), `Ctrl+C` (Visual Studio), `⌘ C` (Visual Studio (macOS)), `Ctrl+C` (NetBeans), `Ctrl+C` (Eclipse), `⌘ C` (Eclipse (macOS))。

## 标记分支为收藏

Procedure:

如果您有许多分支，您可能只想查看自己喜欢的那些。 默认情况下，  main  分支被标记为最爱。 收藏的分支始终显示在 VCS 微件顶部以及   Git   工具窗口的   分支   窗格中。

* 要将分支标记为收藏，请在 VCS 微件中将鼠标悬停在分支名称上，然后点击左侧出现的星形轮廓：

![最喜欢的分支](https://resources.jetbrains.com.cn/help/img/idea/2026.3/GitFavoriteBranch.png)

或者，选择您想标记为喜爱的分支，然后按  `Space` 。

您还可以在   分支  窗格的   Git  工具窗口中选择一个分支，然后点击工具栏上的 ![星形图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.nodes.favorite.svg)。

> **Note:**
> 在搜索特定分支并浏览分支列表时，按 `Ctrl+F` (Windows), `⌘ F` (macOS), `⌘ F` (IntelliJ IDEA Classic (macOS)), `⌘ F` (macOS System Shortcuts), `Ctrl+F` (XWin), `Ctrl+F` (GNOME), `Ctrl+F` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+F` (Sublime Text), `⌘ F` (Sublime Text (macOS)), `Ctrl+F` (Visual Studio), `⌘ F` (Visual Studio (macOS)), `Ctrl+F` (NetBeans), `Ctrl+F` (Eclipse), `Ctrl+F` (Eclipse (macOS)) 将焦点移回搜索字段。

## 分组分支

在 VCS 微件中，IntelliJ IDEA 将分支和标记保存在四个节点中：

* 最近 分支节点最多显示最近检出的五个分支。

* 本地 分支节点列出所有本地分支。

* 远程 节点显示最新 [fetch](sync-with-a-remote-repository.html#fetch)后可用的所有远程分支。

* 标签 节点列出所有可用的标签，您可以检出、与工作树比较、合并、推送或删除这些标签。

此外，IntelliJ IDEA 会自动按目录分组分支，并将其存储在可展开的列表中。

![VCS 微件中按前缀分组的分支](https://resources.jetbrains.com.cn/help/img/idea/2026.3/2023.1` 。

要停止按目录分组分支或隐藏   最近   或   标签   节点，请点击 VCS 微件右上角的 ![齿轮图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.general.settings.svg)   设置  ，然后取消选择   按目录分组  、   显示最近的分支   或   显示标签   选项。

![VCS 微件中的按目录分组选项](https://resources.jetbrains.com.cn/help/img/idea/2026.3/group_by_directory_option.png)

## 查看分支 (git-checkout)

如果您想处理由他人创建的分支，您需要检出它以创建该分支的本地副本。

为确保拥有完整的远程分支列表，请在 VCS 微件中点击 ![Fetch 图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.expui.vcs.fetch.svg)：

![Fetch 图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/VCS_fetch_from_branches_popup.png)

Procedure: 将分支检出为新的本地分支

1. 在 VCS 微件或   Git   工具窗口的   分支   窗格中，从   远程分支   中选择要检出到本地的分支；如果项目有多个根并且已启用 [同步分支控制](#synchronous_branch_control)，则从   常见远程分支   中选择；如果未启用，则从   存储库 | 远程分支   中选择。

2. 请从操作列表中选择   检出  。

将创建一个新的本地分支，检出并设置为跟踪 origin 远程分支。

当您要检出一个远程分支时，可能已经有一个名称相同的本地分支。 根据具体情况，您可以通过以下方式完成结账流程：

* 如果没有提交会丢失，并且本地分支已经跟踪远程分支，IntelliJ IDEA 会自动将本地分支重置为远程分支，然后检出它。

* 如果本地分支包含可以因重置而丢失的提交，IntelliJ IDEA 将为您提供以下选项： * 放弃本地提交​。 ：IntelliJ IDEA 将删除您的本地提交，重置本地分支，并更改跟踪。 * 变基到远程 ：IntelliJ IDEA 将会将您的本地分支变基到远程分支，保留您的本地提交，重置本地分支，并更改跟踪。

Procedure: 在分支之间切换

在多任务处理时，您经常需要在分支之间跳转以提交不相关的更改。

1. 在 VCS 微件或   Git   工具窗口的   分支   窗格中，选择要切换到的   本地分支   下的分支，然后从可用操作列表中选择   检出  。

> **Tip:**
> 要在切换时自动将分支与其远程版本同步，请选择   签出并更新  。 从 [更新分支](sync-with-a-remote-repository.html#update-git-branch) 了解更新的工作方式。

对于多库项目，分支会自动按库进行分组。 要签出所需分支，请先在 VCS 微件中选择仓库。

2. 接下来发生的事情取决于您本地尚未提交的更改与您将要检出分支之间是否存在冲突：

* 如果您的工作树是干净的（也就是说您没有未提交的更改），或者您的本地更改与指定分支没有冲突，该分支将被签出（通知将会在 IntelliJ IDEA 窗口的右下角弹出）。

* 如果您的本地更改将被签出覆盖，IntelliJ IDEA 会显示阻止您签出所选分支的文件列表，并建议在 Force Checkout 和 Smart Checkout 之间进行选择。 如果您点击 强制签出 ，您本地的未提交更改将被覆盖，您将失去它们。 如果您点击 智能结账 ，IntelliJ IDEA 将 [搁置](shelving-and-unshelving-changes.html#shelve-unshelve-changes)未提交的更改，检出所选分支，然后取消搁置更改。 如果在取消悬挂操作期间发生冲突，系统会提示您合并更改。 如需更多信息，请参阅 [解决冲突](resolve-conflicts.html)。 > **Note:** > 如果希望使用 [stash](shelving-and-unshelving-changes.html#stash) 而不是已搁置来清理工作副本，请转到 版本控制 | Git 设置页面 `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))，并在 使用以下方式清理工作树 设置下选择 储藏 。

> **Tip:**
> IntelliJ IDEA 会保存 [上下文](contexts.html)（一组已打开的文件、当前运行配置和 [断点](using-breakpoints.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)) 的   版本控制 | 确认   下启用了   切换分支时恢复工作区   选项。 当您切换到分支时，IntelliJ IDEA 会自动恢复与该分支相关的上下文。
>
>
>
> 请注意，当前该行为仅在通过 IDE 界面切换分支时有效，在终端中无效。

## 比较分支

Procedure: 将某个分支与当前分支进行比较

如果您想检查某个分支如何偏离当前分支，您可以比较它们。

1. 从 VCS 微件或   Git   工具窗口的   分支   窗格中，选择要与当前分支比较的分支，然后选择   与当前比较  。

将在   Git   工具窗口中添加一个新选项卡，列出在所选分支中存在而在当前分支中不存在的所有提交。

可以点击   交换分支   链接，更改在与另一个分支进行比较时被视为基准的分支。

2. 要查看这两个分支中所有不同文件的列表，请按 `Ctrl+A` (Windows), `⌘ A` (macOS), `⌘ A` (IntelliJ IDEA Classic (macOS)), `⌘ A` (macOS System Shortcuts), `Ctrl+A` (XWin), `Ctrl+A` (GNOME), `Ctrl+A` (KDE), `Ctrl+X, H` (Emacs), `Ctrl+A` (Sublime Text), `⌘ A` (Sublime Text (macOS)), `Ctrl+A` (Visual Studio), `⌘ A` (Visual Studio (macOS)), `Ctrl+A` (NetBeans), `Ctrl+A` (Eclipse), `⌘ A` (Eclipse (macOS))： [已更改文件窗格](log-tab.html#changedFiles) 将列出所有包含差异的文件。

Procedure: 将分支与工作树进行比较

除了将分支与当前分支进行比较外，您还可以将其与当前分支的本地状态进行比较。 如果您有本地未提交的更改，这会很有用。

* 从 VCS 微件或   Git   工具窗口的   分支   窗格中，选择要与本地工作树比较的分支，然后选择   显示与工作树的差异  。

更改   工具窗口显示了所选分支与当前检出的分支中不同的所有文件列表：

![显示所选分支与当前工作树之间的差异](https://resources.jetbrains.com.cn/help/img/idea/2026.3/git_branches_diff.png)

* 所选分支中存在但当前分支中缺失的文件会标记为灰色。

* 当前分支中存在但所选分支中缺失的文件会标记为绿色。

* 所选分支与当前分支之间存在差异的文件会标记为蓝色。

可以点击   交换分支   链接，更改在与另一个分支进行比较时被视为基准的分支。

* 要查看特定文件中的差异，请选择它并点击工具栏上的 ![diff icon](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))。

* 要将整个文件内容应用于当前分支，请点击 ![获取分支图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.actions.download.svg)。 更多信息请参阅 [应用独立文件](apply-changes-from-one-branch-to-another.html#copy-files-to-branch)。

Procedure: 列出一个分支中不包含在另一个分支中的所有提交

您可以使用 [两点符号表示法](https://git-scm.com/docs/gitrevisions#Documentation/gitrevisions.txt-Theememtwo-dotRangeNotation)列出所选分支中不包含在其他分支中的所有提交。

例如，当某人处理一个功能分支并且不时将主分支合并到这个功能分支时，这会很有用。 使用此筛选器，您可以仅列出功能分支中的提交，而不列出主分支中的提交。

1. 打开 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))。

2. 在 [提交窗格](log-tab.html#CommitsPane)中，请前往  `分支 | 选择` 。

![Commits 窗格中分支过滤器的上下文菜单](https://resources.jetbrains.com.cn/help/img/idea/2026.3/branch_filter_log_tab.png)

3. 请按以下方式指定您要比较的分支：  `branch1..branch2` 列出所有从  `branch2` 中尚未包含在  `branch1` 中的提交。

4. 按下 `Ctrl+Enter` (Windows), `⌘ ⏎` (macOS), `⌘ ⏎` (IntelliJ IDEA Classic (macOS)), `⌘ ⏎` (macOS System Shortcuts), `Ctrl+Enter` (XWin), `Ctrl+Enter` (GNOME), `Ctrl+Enter` (KDE), `Ctrl+Enter` (Emacs), `Ctrl+Enter` (Sublime Text), `⌘ ⏎` (Sublime Text (macOS)), `Ctrl+Enter` (Visual Studio), `⌘ ⏎` (Visual Studio (macOS)), `Ctrl+Enter` (NetBeans), `Ctrl+Enter` (Eclipse), `⌘ ⏎` (Eclipse (macOS))。

在此示例中，列表包含在分支  `feature1` 中但不包含在分支  `main` 中的提交：

![筛选的提交列表](https://resources.jetbrains.com.cn/help/img/idea/2026.3/list_of_not_included_commits.png)

请观看此视频，以更清楚地了解如何比较您分支的变更：

[Video](https://www.youtube.com/v/7Rjl1Cerbl0)

## 删除分支

Procedure:

在您 [整合功能分支的更改](apply-changes-from-one-branch-to-another.html)到开发主线上之后，您可以删除不再需要的分支。

1. 请检出您将用于进一步工作的分支。

2. 在 VCS 微件或   Git   工具窗口的   分支   窗格中，右键点击要删除的分支，然后选择   删除  。

在您删除一个分支后，右下角会显示一个通知，您可以从中恢复已删除的分支：

![删除分支通知](https://resources.jetbrains.com.cn/help/img/idea/2026.3/deleted_branch_notification.png)

如果该分支包含尚未合并到其上游分支或当前分支的提交，它仍将立即被删除（相当于  `git branch --D`  或  `git branch --delete --force`  命令），但通知还将包含一个链接，允许您查看未合并的提交。

如果已删除的分支正在跟踪一个远程分支，通知中也会有一个链接用于删除远程分支。

> **Note:**
> 如果您关闭了通知，后来决定要恢复删除的分支，该链接将在 [通知工具窗口](notifications.html) 中可用，直到您重新启动 IntelliJ IDEA。

## 配置同步分支控制

Procedure:

如果您有一个多根存储库，您可以配置 IntelliJ IDEA 以在所有根上同时执行所有分支操作（例如检出、合并、删除等），就像它是一个单一存储库一样。

1. 按 `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` 。

2. 选择   在所有根目录上执行分支操作  选项（请注意，仅当您的项目具有多个根时，此选项才可用）。

如果操作在至少一个代码库中失败，IntelliJ IDEA 会建议您在成功的代码库中回滚此操作，以防止分支分叉。

> **Note:**
> 如果只在其中一个根上签出分支，IntelliJ IDEA 将在 VCS 微件中显示   分支已分化   警告。 这意味着根项目位于不同的分支上。
>
>
>
> 如果您想继续，请忽略此警告或禁用   在所有根目录上执行分支操作   选项。 如果您仍想同时在所有根目录上执行分支操作，请手动检出其他存储库中同名的分支。

