阅读(1796) (13)

管理Git分支

2017-12-13 10:24:58 更新

在Git中,分支(branch)是一个强大的机制,可以让你脱离主要的开发线,例如,当您需要处理一个特性, 或者冻结某个版本的代码库的某种状态时。

在IntelliJ IDEA中,所有使用分支的操作​​都在“Git分支”的弹出窗口中执行。要调用它,请执行以下操作之一:

  • 点击状态栏中的Git小部件:
    管理Git分支
  • 通过在主菜单选择VCS操作弹出,或按 Alt+Back Quote,然后选择分支那里,以调用VCS操作弹出。
  • 从主菜单中选择VCS | Git | 分支。
  • 右键单击编辑器中的任何文件,然后在上下文菜单中选择:Git | 存储库| 分支。

如果您有许多分支,您可以选择是要在“分支”弹出窗口中显示所有分支,还是仅显示收藏的分支。要做到这一点,请切换分支弹出窗口底部的“仅显示收藏夹(Show Only Favorites )”和“显示更多(Show x More)”命令。

要将分支标记为收藏,请将鼠标光标悬停在分支名称上,然后单击左侧显示的星形轮廓: 。该master分支被标记为默认的首选项。

当前签出的分支的名称显示在状态栏中的Git小部件中。

如果您有一个多根仓库,则可以启用同步分支控制,这意味着所有分支操作(如checkout,merge,delete等)将同时执行,就像它是单个仓库一样。如果某个操作至少在一个仓库中失败,则IntelliJ IDEA可以通过建议您在成功的仓库中回滚此操作来防止分支发散。您可以在“版本控制| Git”下的“设置/首选项”对话框(Ctrl+Alt+S)中启用同步分支控制 。

创建一个新的分支

如果您想要创建新的分支,例如要处理新的功能,请执行以下操作:

  1. 在“分支(Branches)”弹出窗口中,选择新分支(New Branch)。
  2. 在打开的对话框中,指定分支名称,如果要切换到该分支,则确保选中“检出分支(Checkout branch)”选项。

新的分支将从当前的HEAD开始。如果要从前一个提交而不是当前分支HEAD启动分支,请在Log中选择此提交,然后从上下文菜单中选择New Branch。

签出一个分支作为一个新的本地分支

如果您想在其他人创建的分支中工作,则需要检查以创建该分支的本地副本:

  1. 在“分支(Branches)”弹出窗口中,选择您想从远程分支签出本地的分支,或者常见的远程分支(Common Remote Branches)如果您的项目具有多个根目录并启用了同步分支控制,或者如果它被禁用了,则从“存储库|远程分支(Repositories | Remote Branches)”选择,并从可用操作列表中选择:“检出”作为新的本地分支。
  2. 如有必要,请为此分支输入一个新名称,或保留对应于远程分支的默认名称,然后单击“确定”。

在分支之间切换

IntelliJ IDEA 保存您的上下文(即一组与分支关联的打开的文件,以及当前的运行配置和断点),前提是在版本控制|确认(Version Control | Confirmation)之下的 "设置/首选项" 对话框中启用了"分支切换的还原工作区" 选项 (Ctrl + Alt +S) 。当您切换到不同的分支时,IntelliJ IDEA会自动恢复与该分支关联的上下文。

当多任务时,通常需要在分支之间跳转到提交不相关的更改。要切换到不同的分支,请在“分支”弹出窗口中,选择要切换到 "本地分支" 下的分支,然后从可用操作列表中选择“签出”。接下来会发生什么取决于您尚未提交的本地更改与要检出的分支之间是否存在冲突:

  • 如果您的工作树是干净的(即没有未提交的更改),或者您的本地改变不会与指定的分支发生冲突,这个分支将被检出(IntelliJ IDEA 窗口的右下角会弹出一个通知)。
  • 如果您的本地更改将被checkout覆盖,IntelliJ IDEA将显示阻止您检出所选分支的文件列表,并建议在Force Checkout和Smart Checkout之间进行选择。如果您单击强制签出,您的本地未提交更改将被覆盖,您将失去它们。如果您单击智能签出,IntelliJ IDEA将隐藏未提交的更改,检出所选分支,然后取消更改。如果在非固定操作过程中发生冲突,系统将提示您合并更改。有关详细信息,请参阅解决冲突。

比较分支

如果您想检查两个分支之间的分歧,你可以比较它们。为此,请从分支弹出窗口中选择要与当前分支进行比较的分支,然后从可用操作列表中选择比较。

在打开的对话框中,“Log”选项卡显示一个分支中存在的所有提交列表,而不存在于另一个分支中。当您选择提交时,右侧窗格显示受此提交影响的文件列表。您可以单击工具栏上的“显示差异”图标 ,查看在此提交中所选文件的更改情况。

单击交换分支链接到toggle,切换哪个分支被视为您正在比较其他分支的基础。基本分支显示在左侧。

“文件”选项卡显示两个分支之间有差异的所有文件的列表。单击 显示当前分支中选定文件与您正在进行比较的分支之间的差异。

删除分支

在将功能分支的更改集成到开发主线之后,您可以删除不再需要的分支:

  1. 调用分支弹出并选择您想要删除的分支。
  2. 从子菜单中选择 "删除"。

删除分支后,会在右下角显示通知,您可以从中恢复已删除的分支:

管理Git分支 

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

如果已经删除的分支正在跟踪远程分支,您也可以从此通知中删除远程分支。