【idea】idea 中 git 分支多个提交归并一个提交到新的分支

[复制链接]
发表于 2026-2-22 10:41:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一、方法原理解说

我们在 dev 分支对差别的代码文件做了多次提交。现在我们想要把这些提交都归并到 test 分支。起首我们要明确四个 git 操纵,

  • commit:下令用于将你的代码变更生存到当地代码堆栈中,它创建了一个新的提交(commit)记录,记录了代码的变更内容以及相干的提交信息(如作者、时间、提交阐明等)。
  • push:下令用于将当地堆栈中的代码推送(上传)到长途代码堆栈,将你的代码变更分享给其他开发者大概备份到长途服务器。
  • cherry pick:下令用于从一个分支中选择性地归并某个提交(commit)到当前分支,它答应你只归并必要的提交而不是整个分支的变更。
  • squash: 用于将多个一连的提交(commit)归并成一个提交,以便整理汗青记录或整理提交信息。这个操纵通常用于将多个相干的小提交归并成一个更故意义和完备性的大提交,以进步代码库的可读性和维护性。
从上面四个操纵,要将A分支的多个提交归并一个提交到新的分支。我们得出两个方法,

  • 方法一:先把A分支已经提交的使用 squash 归并成一个commit,然后 push 到A长途,然后从A长途直接 cherrypick 这一个分支到B分支。
  • 方法二:先把A分支已经提交push到A长途,然后 cherrypick 到B分支当地举行 commit ,再将多个提交使用 squash 归并成一个提交 push 给B长途。
二、对多个提交归并到一个提交 squash


步调2.1、选中开始提交的一个记录,右键选择 “Interactively Rebase from Here”

会出现下面的窗口,有多个 action 方式,分别体现以下寄义:

  • pick:git会应用这个补丁,以同样的提交信息(commit message)生存提交
  • reword:git会应用这个补丁,但必要重新编辑提交信息
  • edit:git会应用这个补丁,但会由于amending而克制
  • squash:git会应用这个补丁,但会与之前的提交归并
  • fixup:git会应用这个补丁,但会丢掉提交日志日志
  • exec:git会在shell中运行这个下令
步调2.2、我们想要选择与之前的提交归并,因此我们选择 squash


第一个选择 squash 是会报错,由于不能与前面的归并。因此第一个我们照旧选择 pick

步调2.3、会让我们重新整理提交的备注。


然后我们就多了一个归并后的新的提交记录

三、挑选代码到新分支 cherrypick

我们演示以下把代码从 dev 分支选到 test 分支。
步调3.1、使用 checkout 把代码切到 test

由于 cherrypick 下令是将分支提交挑选到当前分支,因此要先切换到test分支。

步调3.2、idea 的 git 取消 cherrypick 主动推送长途

取消选择 file -》setting -》git -》Commit automatically on cherry-pick

步调3.3、选中一个要转移的提交,右键选择 cherrypick

这里肯定要注意提交记录的分支选择精确,要从 dev 挑选到 test,因此 branch 选择 dev,这里dev也分当地 local 和长途 origin。确认清楚这个提交在当地照旧长途。

四、末了多个提交归并后 push 到长途


效果验证,日志日志中的分支选择 origin-》test,可以看到只有一条记录。

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表