如何在IDEA中将本地提交组合并到单个推送中?


85

在IDEA中,我尝试推送一些提交。

我有一个要求,在远程服务器上它看起来像是单个操作。

我点击以查看以下窗口 在此处输入图片说明

我希望在这里看到壁球复选框,但没有看到它。

请帮我。


2
无法提供IDEA建议,但压缩是交互式rebase或合并的一部分,而不是提交。尝试看看那里。
musiKk 2014年

Answers:


115

您可以使用变基来实现。转到VCS / Git / Rebase。然后选择“交互”选项。它将显示一个提交列表,您可以在其中选择要压缩的提交。

在单击“开始重新设置基准”后,它将提示您有关压缩的提交的提交消息。完成之后,您可以使用“推入”对话框来推入压缩的提交。

壁球对话框

有关IntelliJ中的变基的更多信息,请参见此处


9
阅读此《Git工具-重写历史记录》文章以了解在“ Rebase分支”对话框的“ Onto字段”中输入什么内容也可能会有所帮助 :例如,HEAD~3可用于选择最后3次提交。
TmTron

当您将一堆提交压缩在一起时,这些提交中的每个提交的个人详细信息都会丢失吗?最终看起来像是一次大承诺吗?
ycomp

@ycomp是的,交互式rebase重写了历史记录,因此丢失了单个压缩的提交,并在其位置创建了一个新的提交。
Bohuslav Burghardt

谢谢,您可以撤回南瓜吗?
ycomp

@ycomp我从未真正做到过,但是应该可以。请参考下面的SO职位:stackoverflow.com/q/10260151/1291150stackoverflow.com/q/134882/1291150
博胡斯拉夫瑞光

33

有一种新方法:

版本控制->日志->右键单击提交->Interactively rebase from here然后您可以选择拾取/压缩其余提交。


1
这种方法的问题在于,无法为多个提交选择“ Squash”,并且一个接一个地繁琐。
德米特里·谢尔迪克

4
@DmitrySerdiuk可以单击以选择要压榨的提交,然后右键单击->选择压榨。
Aarjav

1
@Aarjav噢,我的天哪,我正是以为它不见了!在对话框中没有有关右键单击菜单的提示。
o_nix

21

对我来说,使用intellij最简单的方法是:

  • 转到Log选项卡,然后选择要压缩的提交
  • 右键单击并选择 Reset Branch to this commit
  • 选择mixin选项以使更改不提交
  • 提交更改,别忘了检查Amend commit选项

1
这确实是最简单的方法,我发现它的压力最小且容易出错。
davrog10 '19

2
我建议在第3步中最好选择一个Soft选项,而不是Mixed已经准备好提交所有更改。
provisota
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.