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

100
在IDEA中,我正在尝试提交一些更改。 我有一个要求,在远程服务器上看起来是单个操作。 我单击推送并看到以下窗口 enter image description here 我希望在这里看到压缩复选框,但没看到。 请帮帮我。

4
无法给出 IDEA 的建议,但“squashing”是交互式 rebase 或合并的一部分,而不是提交。建议在那里查找。 - musiKk
4个回答

125
你可以使用rebase来完成。进入 VCS/Git/Rebase,然后选择Interactive选项。它会显示一个提交列表,在这里你可以选择想要合并的提交。
当你点击开始变基时,它会提示你为合并的提交编写一条提交信息。完成后,你可以使用push对话框推送你的合并提交。
更多关于IntelliJ中rebase的信息在这里

11
阅读Git工具-重写历史文章可能有助于了解在“Rebase分支”对话框的“Onto字段”中输入什么,例如HEAD~3可用于选择最后3个提交。 - TmTron
嗯,在此之前有一个对话框,告诉你使用HEAD~2表示法来处理最近的两个提交。那很顺利地解决了问题。https://dev59.com/OlsW5IYBdhLWcg3wZmmc - jediz
谢谢,这仍然是与Intellij Idea 2019.1一起工作最简单的方法。 - Chirag Visavadiya
不要忘记“强制推送”。 - Stefan

43

有一种新的方式:

版本控制 -> 日志 -> 在提交上右键单击 -> 从这里交互式地变基,然后您可以选择挑选/压缩其他提交。


1
这种方法的问题在于没有办法为多个提交选择“Squash”,一个一个地选择变得很繁琐。 - Dmitry Serdiuk
6
你可以使用 Shift+点击来选择你想要压缩的提交记录,然后右键单击 -> 选择“压缩”即可。 - Aarjav

24

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

  • 进入Log选项卡并选择要合并的提交记录
  • 右键点击并选择Reset Branch to this commit
  • 选择Soft或Mixin选项以保留提交中的更改
  • 提交您的更改,不要忘记勾选Amend commit选项

1
这确实是最简单的方法,我发现它是最少压力和错误的方法。 - davrog10
3
建议在第三步中选择“软提交”选项,而不是“混合提交”,以将所有更改都暂存为提交准备。 - provisota
唯一的第一步就足够了。 - wowkin2

5

在最新版本的IntelliJ中,您只需选择所有提交记录,右键单击->压缩提交


这样做可能存在哪些潜在危险?这看起来似乎非常简单,但是否有隐患?IntelliJ在幕后做了什么? - payne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接