管理 Git 分支
最后修改时间:2023 年 9 月 11 日在 Git 中,分支是一种强大的机制,它允许您偏离主开发线,例如,当您需要处理某个功能,或者冻结代码库的某个状态以进行发布等时。
在 IntelliJ IDEA 中,所有分支操作都在Git Branches弹出窗口中执行。要调用它,请在主窗口标题中单击包含当前签出的分支名称的 Git 小部件:
您还可以在Git工具窗口的“分支”窗格中管理分支并对多个分支执行批量操作。
创建新分支
从当前分支创建一个新分支
在“分支”弹出窗口中,选择“新建分支”或右键单击 Git工具窗口的“分支”窗格中的当前分支,然后从“分支名称”中选择“新建分支” 。
在打开的对话框中,指定分支名称,如果要切换到该分支,请确保选择“签出分支”选项。
一旦您开始为新分支输入名称,IntelliJ IDEA 将根据现有本地分支的名称建议相关前缀。
新分支将从当前分支 HEAD 开始。
从选定的分支创建新分支
在“分支”弹出窗口或 Git工具窗口的“分支”窗格中,选择要从中启动新分支的本地或远程分支,然后从“选定的”中选择“新建分支”。
在打开的对话框中,指定分支名称,如果要切换到该分支,请确保选择“签出分支”选项。
从选定的提交创建新分支
在“日志”视图中,选择要充当新分支起点的提交,然后从上下文菜单中选择“新建分支” 。
在打开的对话框中,指定分支名称,如果要切换到该分支,请确保选择“签出分支”选项。
重命名分支
在“分支”弹出窗口或 Git工具窗口的“分支”窗格中,选择要重命名的分支,然后选择“重命名”。
在打开的对话框中,将分支名称更改为您需要的名称。
提示
要复制分支的名称,请将鼠标悬停在该分支上并按。Ctrl0C
将分支标记为收藏夹
如果您有很多分支,您可能只想查看您最喜欢的分支。默认情况下,主分支被标记为收藏夹。最喜欢的分支始终显示在“分支”弹出窗口的顶部以及 Git工具窗口的“分支”窗格中。
要将分支标记为收藏夹,请在“分支”弹出窗口中,将鼠标悬停在分支名称上,然后单击左侧显示的星形轮廓:
或者,选择您想要标记为收藏的分支,然后按Space。
您还可以在Git工具窗口的“分支”窗格中选择一个分支 ,然后单击工具栏上的 。
笔记
在搜索特定分支并导航分支列表时,按将焦点移回搜索字段。Ctrl0F
集团分支机构
在“分支”弹出窗口中,IntelliJ IDEA 将分支保留在三个节点中:
最近的分支节点最多显示五个最近签出的分支。
本地分支节点列出了所有本地分支。
远程分支节点显示最新fetch之后可用的所有远程分支。
此外,IntelliJ IDEA 自动按前缀对分支进行分组并将它们存储在可扩展列表中。
为了对分支进行分组,分支名称中的前缀应使用正斜杠分隔/。例如,jd/2023.1
。
如果您不希望按前缀对分支进行分组,请单击“分支”弹出窗口右上角的,然后取消选择“按前缀分组”选项以将其禁用。
检查分支(git-checkout)
如果您想处理其他人创建的分支,则需要将其签出以创建该分支的本地副本。
要确保您拥有远程分支的完整列表,请单击“分支”弹出窗口:
将分支检出为新的本地分支
在“分支”弹出窗口或 Git工具窗口的“分支”窗格中,选择要从“远程分支”或“公共远程分支”(如果您的项目有多个根并且启用了同步分支控制)在本地检出的分支,或者从“存储库”| 远程分支(如果已禁用)。
从操作列表中选择结帐。
将创建、检出并设置新的本地分支以跟踪原始远程分支。
您可能已经有一个与您要签出的远程分支同名的本地分支。根据具体情况,您可以通过以下方式完成结账流程:
如果没有提交丢失,并且本地分支已经跟踪远程分支,IntelliJ IDEA 会自动将本地分支重置为远程分支,然后将其签出。
如果本地分支包含可能因重置而丢失的提交,IntelliJ IDEA 将为您提供:
删除本地提交:IntelliJ IDEA 将删除您的本地提交、重置本地分支并更改跟踪。
变基到远程:IntelliJ IDEA 会将您的本地分支变基到远程分支,保留本地提交,重置本地分支并更改跟踪。
分支间切换
当进行多任务处理时,您经常需要在分支之间跳转以提交不相关的更改。
在“分支”弹出窗口或 Git工具窗口的“分支”窗格中,在“本地分支”下选择要切换到的分支,然后从可用操作列表中选择“签出” 。
对于多存储库项目,分支会按存储库自动分组。要检查必要的分支,请在“分支”弹出窗口中,首先选择存储库。
接下来会发生什么取决于您尚未提交的本地更改与您要签出的分支之间是否存在冲突:
如果你的工作树是干净的(这意味着你没有未提交的更改),或者你的本地更改与指定分支不冲突,则该分支将被签出(IntelliJ IDEA 右下角会弹出通知)窗户)。
如果您的本地更改将被签出覆盖,IntelliJ IDEA 会显示阻止您签出所选分支的文件列表,并建议在Force Checkout和Smart Checkout之间进行选择。
如果您单击“强制签出”,您本地未提交的更改将被覆盖,并且您将丢失它们。
如果您单击Smart Checkout,IntelliJ IDEA 将搁置未提交的更改,检出所选分支,然后取消搁置更改。如果取消搁置操作期间发生冲突,系统将提示您合并更改。有关详细信息,请参阅解决冲突。
笔记
如果您想使用存储而不是搁置来清理工作副本,请转到版本控制| IDE 设置的 Git页面,然后在“清理工作树使用”设置下选择“搁置”。CtrlAlt0S
提示
比较分支机构
将分支与当前分支进行比较
如果你想检查一个分支与当前分支的分歧程度,你可以比较它们。
从“分支”弹出窗口或 Git工具窗口的“分支”窗格中,选择要与当前分支进行比较的分支,然后选择“与当前比较”。
Git工具窗口中将添加一个新选项卡,列出所选分支中存在且当前分支中不存在的所有提交。
您可以单击“交换分支”链接来更改将哪个分支视为与其他分支进行比较的基础。
要查看两个分支中不同的所有文件的列表,请单击:“更改的文件”窗格将列出包含差异的所有文件。Ctrl0A
将分支与工作树进行比较
除了将分支与当前分支进行比较之外,您还可以将其与当前分支的本地状态进行比较。如果您有本地未提交的更改,这非常有用。
从“分支”弹出窗口或 Git工具窗口的“分支”窗格中,选择要与本地工作树进行比较的分支,然后选择“显示与工作树的差异”。
打开的“更改”工具窗口显示所选分支中与当前签出的分支相比不同的所有文件的列表:
所选分支中存在且当前分支中缺失的文件标记为灰色。
当前分支中存在但所选分支中缺失的文件标记为绿色。
包含所选分支和当前分支之间差异的文件用蓝色标记。
您可以单击“交换分支”链接来更改将哪个分支视为与其他分支进行比较的基础。
要查看特定文件中的差异,请选择该文件并单击工具栏上的 ,或按。Ctrl0D
要将整个文件内容应用到当前分支,请单击。有关详细信息,请参阅应用单独的文件。
观看此视频以更好地了解如何比较分支的更改:
删除分支
将功能分支的更改集成到开发主线后,您可以删除不再需要的分支。
检查您将用于进一步工作的分支。
在“分支”弹出窗口中或从 Git工具窗口的“分支”窗格中,右键单击要删除的分支,然后选择“删除”。
删除分支后,右下角会显示一条通知,您可以从中恢复已删除的分支:
如果分支包含尚未合并到其上游分支或当前分支的提交,它仍然会立即删除(相当于 or 命令git branch --D
)git branch --delete --force
,但通知还将包含一个链接,允许您查看未合并的提交。
如果删除的分支正在跟踪远程分支,则此通知中还会有一个用于删除远程分支的链接。
笔记
如果您已关闭通知并稍后决定恢复已删除的分支,则该链接将在“通知”工具窗口中可用,直到您重新启动 IntelliJ IDEA。
配置同步分支控制
如果您有一个多根存储库,您可以将 IntelliJ IDEA 配置为在所有根上同时执行所有分支操作(例如签出、合并、删除等),就像它是单个存储库一样。
按打开 IDE 设置,然后选择版本控制 | 吉特.CtrlAlt0S
选择“在所有根上执行分支操作”选项(请注意,此选项仅在您的项目有多个根时才可用)。
如果某个操作至少在其中一个存储库中失败,IntelliJ IDEA 会建议您在成功的存储库中回滚此操作,从而防止分支出现分歧。
笔记
如果您仅在其中一个根上检查分支,IntelliJ IDEA 将在“分支”弹出窗口中显示“分支已发散”警告。这意味着根项目位于不同的分支上。
如果您想继续,请忽略此警告或禁用“在所有根上执行分支操作”选项。如果您仍想同时对所有根执行分支操作,请手动检查其余存储库中的同名分支。
感谢您的反馈意见!