管理 Git 分支
在 Git 中, 分支 是一种强大的机制,允许您从主开发线分支出来,例如当您需要开发一个功能或冻结代码库的某个状态以进行发布等情况。
在 IntelliJ IDEA 中,所有关于分支的操作均在 Git 分支 弹出窗口中进行。 要调用它,请在主窗口标题中点击当前签出的分支名称的 Git 小部件:

您还可以在 Branches pane 的 Git 工具窗口中管理分支并执行多个分支的批量操作。

创建新分支
从当前分支创建一个新分支
在 分支 弹出窗口中,选择 新建分支 ,或者在 分支 窗格的 Git 工具窗口中右键点击当前分支,然后选择 从“branch name”新建分支。
在打开的对话框中,指定分支名称,如果您想要切换到该分支,请确保选择了 签出分支 选项。
一旦您开始输入新分支的名称,IntelliJ IDEA 将根据现有本地分支的名称建议相关前缀。
新分支将从当前分支的 HEAD 开始。
从选定的分支创建一个新分支
在 分支 弹出窗口或 分支 窗格的 Git 工具窗口中,选择您希望从中创建新分支的本地或远程分支,然后选择 从选定处新建分支。
在打开的对话框中,指定分支名称,如果您想要切换到该分支,请确保选择了 签出分支 选项。
从选定的 commit 创建一个新分支
在 日志视图中,选择您想要作为新分支起点的提交,然后从上下文菜单中选择 新建分支。
在打开的对话框中,指定分支名称,如果您想要切换到该分支,请确保选择了 签出分支 选项。
重命名分支
在 分支 弹出窗口或 分支 窗格的 Git 工具窗口中,选择您想要重命名的分支,然后选择 重命名。
在打开的对话框中,将分支名称更改为您需要的名称。
标记分支为收藏
如果您有许多分支,您可能只想查看自己喜欢的那些。 默认情况下, main 分支被标记为最爱。 收藏的分支始终显示在 分支 弹出窗口的顶部以及 分支 窗格的 Git 工具窗口中。
要将分支标记为收藏, 分支 弹出窗口中,请将鼠标悬停在分支名称上,然后点击左侧出现的星形轮廓:

或者,选择您想标记为喜爱的分支,然后按 Space 。
您还可以在 分支 窗格的 Git 工具窗口中选择一个分支,然后点击工具栏上的
。
分组分支
在 分支 弹出窗口中,IntelliJ IDEA 将分支和标签保存在四个节点中:
最近 分支节点最多显示最近检出的五个分支。
本地 分支节点列出所有本地分支。
远程 节点显示最新 fetch后可用的所有远程分支。
标记 节点列出所有可用的标签,您可以检出、与工作树比较、合并、推送或删除这些标签。
此外,IntelliJ IDEA 会自动按前缀分组分支并将它们存储在可展开的列表中。

为了将分支分组,分支名称中的前缀应使用正斜杠
/
分隔。 例如, jd/2023.1。
要停止按前缀分组分支或隐藏 最近 或 标记 节点,请点击 设置 ,在 分支 弹出窗口的右上角,然后取消选择 按前缀分组、 显示最近的分支 或 显示标签 选项。

查看分支 (git-checkout)
如果您想处理由他人创建的分支,您需要检出它以创建该分支的本地副本。
为了确保您拥有完整的远程分支列表,请点击 在 分支 弹出窗口中:

将分支检出为新的本地分支
在 分支 弹出窗口或 分支 窗格的 Git 工具窗口中,选择您希望从 远程分支 检出到本地的分支,或者如果您的项目有多个根目录并启用了 同步分支控制 ,则从 常见远程分支 检出;如果未启用,则从 存储库 | 远程分支 检出。
请从操作列表中选择 签出。
将创建一个新的本地分支,检出并设置为跟踪 origin 远程分支。
当您要检出一个远程分支时,可能已经有一个名称相同的本地分支。 根据具体情况,您可以通过以下方式完成结账流程:
如果没有提交会丢失,并且本地分支已经跟踪远程分支,IntelliJ IDEA 会自动将本地分支重置为远程分支,然后检出它。
如果本地分支包含可以因重置而丢失的提交,IntelliJ IDEA 将为您提供以下选项:
删除本地提交 :IntelliJ IDEA 将删除您的本地提交,重置本地分支,并更改跟踪。
变基到远程 :IntelliJ IDEA 将会将您的本地分支变基到远程分支,保留您的本地提交,重置本地分支,并更改跟踪。
在分支之间切换
在多任务处理时,您经常需要在分支之间跳转以提交不相关的更改。
在 分支 弹出窗口或 分支 窗格的 Git 工具窗口中,选择您希望切换到的分支,位于 本地分支 下,然后从可用操作列表中选择 签出。
对于多库项目,分支会自动按库进行分组。 要签出所需的分支,请在 分支 弹出窗口中首先选择存储库。
接下来发生的事情取决于您本地尚未提交的更改与您将要检出分支之间是否存在冲突:
如果您的工作树是干净的(也就是说您没有未提交的更改),或者您的本地更改与指定分支没有冲突,该分支将被签出(通知将会在 IntelliJ IDEA 窗口的右下角弹出)。
如果您的本地更改将被签出覆盖,IntelliJ IDEA 会显示阻止您签出所选分支的文件列表,并建议在 Force Checkout和 Smart Checkout之间进行选择。
如果您点击 强制签出 ,您本地的未提交更改将被覆盖,您将失去它们。
如果您点击 智能结账 ,IntelliJ IDEA 将 搁置未提交的更改,检出所选分支,然后取消搁置更改。 如果在取消悬挂操作期间发生冲突,系统会提示您合并更改。 如需更多信息,请参阅 解决冲突。
比较分支
将某个分支与当前分支进行比较
如果您想检查某个分支如何偏离当前分支,您可以比较它们。
从 分支 弹出窗口或 分支 窗格的 Git 工具窗口中,选择您希望与当前分支比较的分支,然后选择 与当前分支进行比较。
将在 Git 工具窗口中添加一个新选项卡,列出在所选分支中存在而在当前分支中不存在的所有提交。
您可以点击 交换分支 链接更改被视为基准的分支,您正在与之比较其他分支。
要查看这两个分支中所有不同文件的列表,请按 Ctrl+A: 已更改文件窗格 将列出所有包含差异的文件。
将分支与工作树进行比较
除了将分支与当前分支进行比较外,您还可以将其与当前分支的本地状态进行比较。 如果您有本地未提交的更改,这会很有用。
从 分支 弹出窗口或 分支 窗格的 Git 工具窗口中,选择您希望与本地工作树比较的分支,然后选择 显示与工作树的差异。
更改 工具窗口显示了所选分支与当前检出的分支中不同的所有文件列表:

在所选分支中存在且在当前分支中缺失的文件将标记为灰色。
当前分支中存在但在选定分支中缺失的文件以绿色标记。
包含所选分支和当前分支之间差异的文件将被标记为蓝色。
您可以点击 交换分支 链接更改被视为基准的分支,您正在与之比较其他分支。
要查看特定文件中的差异,请选择它并点击工具栏上的
,或者按 Ctrl+D。
要将整个文件内容应用于当前分支,请点击
。 更多信息请参阅 应用独立文件。
列出一个分支中不包含在另一个分支中的所有提交
您可以使用 两点符号表示法列出所选分支中不包含在其他分支中的所有提交。
例如,当某人处理一个功能分支并且不时将主分支合并到这个功能分支时,这会很有用。 使用此筛选器,您可以仅列出功能分支中的提交,而不列出主分支中的提交。
打开 Git 工具窗口 Alt+9。
在 提交窗格中,请前往 。

请按以下方式指定您要比较的分支:
branch1..branch2列出所有从branch2中尚未包含在branch1中的提交。按下 Ctrl+Enter。
在此示例中,列表包含在分支
feature1中但不包含在分支main中的提交:
请观看此视频,以更清楚地了解如何比较您分支的变更:
删除分支
在您 整合功能分支的更改到开发主线上之后,您可以删除不再需要的分支。
请检出您将用于进一步工作的分支。
在 分支 弹出窗口或 分支 窗格的 Git 工具窗口中,右键点击您想要删除的分支,然后选择 删除。
在您删除一个分支后,右下角会显示一个通知,您可以从中恢复已删除的分支:

如果该分支包含尚未合并到其上游分支或当前分支的提交,它仍将立即被删除(相当于 git branch --D 或 git branch --delete --force 命令),但通知还将包含一个链接,允许您查看未合并的提交。
如果已删除的分支正在跟踪一个远程分支,通知中也会有一个链接用于删除远程分支。
配置同步分支控制
如果您有一个多根存储库,您可以配置 IntelliJ IDEA 以在所有根上同时执行所有分支操作(例如检出、合并、删除等),就像它是一个单一存储库一样。
按 Ctrl+Alt+S 打开设置,然后选择 。
选择 在所有根上执行分支操作 选项(请注意,仅当您的项目具有多个根时,此选项才可用)。
如果操作在至少一个代码库中失败,IntelliJ IDEA 会建议您在成功的代码库中回滚此操作,以防止分支分叉。