git squash较旧的提交(不是最后一个)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (228)

我有一个非常混乱的git历史。我想压制一堆旧的提交(不包括最后一个提交)。

我知道如何压制我最后的n提交。但这是不同的。在这里,我连续提交n1n2我想要压缩成一个,而在n2我有一个提交历史后,我想保留到最后一个。

所以,如果我目前的历史是这样的:

---- n1 --- n2 -------- m

我想挤压n1n2所以最终看起来像这样:

---- n1n2 -------- m

其中n1n2是一个包含来自n1to 的压缩内容的提交n2

我该怎么做?对历史的影响n2m什么?

也就是说,每次提交的哈希都会因为我想做什么n2m改变?

提问于
用户回答回答于

你可以做一个交互式的rebase [1] [2]

  1. 启动交互式rebase:
git rebase -i HEAD~n (where ’n’ is how far do you want to go back in history)
  1. 您的默认编辑器将打开。在顶部,n将以相反的顺序显示最新提交的列表。例如:
pick a5f4a0d commit-1
pick 19aab46 commit-2
pick 1733ea4 commit-3
pick 827a099 commit-4
pick 10c3f38 commit-5
pick d32d526 commit-6
  1. 为要压缩的所有提交指定squash(或快捷方式s)。例如:
pick a5f4a0d commit-1
pick 19aab46 commit-2
squash 1733ea4 commit-3
squash 827a099 commit-4
pick 10c3f38 commit-5
pick d32d526 commit-6

Git将更改和更改直接应用于它之前,并使您将提交消息合并在一起。

  1. 保存并退出。
  2. Git将应用所有更改,并将再次打开您的编辑器以合并三个提交消息。您可以修改提交消息或保持原样(如果是这样,将连接所有提交的提交消息)。
  3. 你完成了!您选择的提交将全部与前一个提交相关。

热门问答

【有奖互动】你是哪个星球的人?

青年码农

晨讯科技 · web前端开发高级工程师 (已认证)

公众号【青年码农】:有趣、有料,有深度、有广度、有热度。

主库的binlog被删掉了,从库是否可以用对应的Relay_Log_File同步?

朱明豪从事Oracle、MySQL等数据库工作10年,擅长性能诊断优化、故障处理、SQL优化、业务架构设计、技术培训等。
推荐
1.Waiting for Slave Workers to free pending events, 可能是出现大事务,可能参数slave_pending_jobs_size_max过小 2.“主库设置了expire_logs_days,所以从库的Relay_Mas...... 展开详请

CDN加速时,当带宽超出所设置阈值后关闭CDN服务,是否可以自动重启CDN服务?

开元

腾讯云 · 高级工程师 (已认证)

专注给云上客户提供优质的服务和行业解决方案
推荐

触发封顶带宽导致域名关闭后,若您希望继续使用 CDN 服务,可以在重新启动域名加速。

详见https://cloud.tencent.com/document/product/228/7541

是否提供海外CDN加速服务(微信小程序云)?

开元

腾讯云 · 高级工程师 (已认证)

专注给云上客户提供优质的服务和行业解决方案
推荐

目前腾讯云是支持海外加速的,CDN加速只和域名有关系,只需要把需要海外加速域名配置海外CDN就就可以。详细见:https://cloud.tencent.com/document/product/673

Dr.Elephant支持hadoop3吗?还有编译一直有包找不到怎么解决?

目前TBDS的hadoop版本是2.7.2,建议配置文件中使用该版本号进行匹配

使用文档遇到问题,可以找谁处理?

推荐已采纳
请叫我雷锋!腾讯云文档有“文档反馈”的功能,直接在文档页面就可以反馈,反馈还有 礼品 ~ 云+社区:问答.png ... 展开详请

所属标签

扫码关注云+社区

领取腾讯云代金券