Git将分支更改应用到另一个分支
在Git中,有几种方法可以将更改从一个分支集成到另一个分支中:合并分支、重定向分支或将不同的提交从一个分支应用到另一种(cherry-pick)。
合并Git分支
假设您已经创建了一个功能分支来处理特定的任务,并且想要在完成并测试您的功能之后将工作结果集成到主代码库中:
将您的分支合并到主分支中是最常见的方法。
当您在您的特色部门工作的时候,您的队友们继续承担他们的工作,这是非常普遍的:
当您运行 merge 时,来自功能分支的更改将集成到目标分支的HEAD中:
Git 创建一个新的提交(M),这个提交被称为合并提交,其结果是将来自功能分支与来自两个分支分叉的点的master的更改组合在一起。
要合并分支,请执行以下操作:
- 切换到您想要将更改集成到的目标分支。
- 调用分支弹出式菜单,并选择您要合并到目标分支中的分支。
- 从子菜单中选择 "合并"。
如果您的工作树是干净的(即你没有任何未提交的改变),并且您的功能分支和目标分支之间不会发生冲突,Git会合并这两个分支,并且合并提交将出现在Log中:
如果分支与目标分支之间发生冲突,系统将提示您解决冲突(请参阅“解决冲突”以了解详细信息)。
如果您有本地更改将被合并覆盖,IntelliJ IDEA将建议执行智能合并。如果您选择此选项,IntelliJ IDEA将存储未提交的更改,执行合并,然后取消更改。
重建分支
当您rebase分支到另外一个分支时,您将第一个分支的提交应用到第二个分支的HEAD提交之上,而不是合并到目标分支。
假设您已经创建了一个功能分支来处理特定的任务,并对该分支进行了多次提交:
当你在你的分支发展,你的队友继续承诺:
执行rebase操作时master,通过在当前的HEAD提交之上应用提交,将您在功能分支中完成的更改集成到分支中master:
您可以通过从主菜单选择:VCS | Git | 继续重新绑定,来恢复中断重新分配操作,并通过选择:VCS | Git | 中止重新激活,来取消未完成的重新绑定操作。
重新绑定另一个分支上的当前分支
要重新绑定当前在另一个分支上检出的分支,请执行以下操作:
- 调用分支弹出式菜单并选择您想要分支到当前分支的分支。
- 从可用操作列表中选择“重定向到”。
重新绑定当前分支的分支
要重新绑定当前签出的分支的顶部的分支,请执行以下操作:
- 调用分支弹出式窗口,并选择您想要在当前分支上重新分支的分支。
- 从可用操作列表中:选择“使用重新绑定签出”。
有关如何在重新绑定期间跳过或压缩提交的详细信息,请参阅通过执行交互式重新分配来编辑项目历史记录。
观看此视频,了解合并或重建操作如何反映在“日志”视图中:
将特定提交的更改应用到另一个分支(cherry-pick)
有时您只需要将一个提交应用到不同的分支,而不是重新绑定或合并整个分支。这可能是有用的,例如,如果您正在使用功能分支,并且想要集成在两个分支已经分支之后提交的master程序,或者您可能希望将修复移植到以前的发行版分支等。
IntelliJ IDEA允许您使用Cherry-pick动作来做到这一点:
- 切换到您想要将更改集成到的目标分支。
- 打开“版本控制工具”窗口(Alt+9)并切换到“日志”选项卡。
- 找到包含要进行Cherry-pick的更改的提交。请注意,日志列出了所有提交。要减少列表中的项目数量,可以按分支、用户或日期筛选提交。您也可以单击突出显示未选择的提交按钮来灰化已经应用到当前分支的提交。如果您知道提交散列,或者正在查找已标记的提交,则还可以使用“转到哈希/分支/标记”操作(在日志视图中按下 Ctrl + F,或单击工具栏上的 "查找”)。
- 选择所需的提交。如有必要,请在 "提交详细信息" 区域中使用。
- 点击工具栏上的Cherry-pick按钮。IntelliJ IDEA将显示 "提交更改" 对话框和自动生成的提交消息。如果您想在将代码提交到目标分支之前查看更改,甚至修改代码,则可以在该对话框中的 "差异查看器" 中执行此任务。
- 完成后,单击“ 提交”以挑选选定的更改。请注意,如果您单击“取消”,则将使用您在“本地更改”选项卡中可以看到的所选更改创建单独的更改列表。您可以查看这些更改并在必要时提交。