热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

使用autosquash进行变基不能按预期工作

如何解决《使用autosquash进行变基不能按预期工作》经验,为你挑选了1个好方法。

我正在尝试使用autosquashgit-rebase提供的选项压缩最后3次提交.我有以下历史:

* commit 78a7e4844fa32d2ef1bb7bd9b44c4a1b9551d31a (HEAD, new)
| Author: maxim koretskyi 
| Date:   Fri Feb 20 10:29:48 2015 +0200
|
|     squash! s3
|
* commit f25491cadc646baf14bd7e951245c6777230a1d7
| Author: maxim koretskyi 
| Date:   Fri Feb 20 10:29:42 2015 +0200
|
|     squash! s2
|
* commit b988237356ffb59752e49049d083c558373f9486
| Author: maxim koretskyi 
| Date:   Fri Feb 20 10:29:24 2015 +0200
|
|     squash! s1
|
* commit abbcdc833e5eaabe79681bd82087b4d7969e8599 (new1, ne, 9484)
| Author: maxim koretskyi 
| Date:   Wed Feb 18 18:21:58 2015 +0200
|
|     3

所以我想要提交消息s1,s2s3以前缀squash!为基础进行压缩.现在我发出以下命令:

$ git rebase -i abbcdc833 --autosquash

所以git打开一个文本编辑器,其中包含以下内容:

pick b988237 squash! s1
pick f25491c squash! s2
pick 78a7e48 squash! s3

但我希望它是这样的:

pick b988237 squash! s1
squash f25491c squash! s2
squash 78a7e48 squash! s3

我究竟做错了什么?



1> torek..:

从文档,但强调我的:

当提交日志消息以"squash!..."(或"fixup!...")开头,并且有一个提交标题以相同的...开头时,自动修改todo列表rebase -i以便提交标记为压缩是在提交修改后立即进行的,并将移动的提交的操作从pick更改为squash(或fixup).在第一次之后忽略后续的"fixup!"或"squash!",以防你提到早期的fixup/squash git commit --fixup/--squash.

你的第一个squash!具有s3作为其...部分.因此,rebase寻找具有s3其"标题" 的提交(这在文档中从未定义,但它似乎意味着"单行描述",即日志消息的第一行).列表中没有此类提交.

继续到第二个,我们发现了同样的问题,同样与第三个问题相同.

如果你的第一个提交(带标题s1)之后是一个标题为的提交squash! s1,那个特定的提交将得到一个"壁球"字.

(注意git commit --fixup=git commit --squash=将为你创建这种"相同标题"提交."忽略后续"的东西是因为你可以在工作时这样做:

git add ...; git commit -m thing1
... edit ...
git add ...; git commit -m thing2
# now fix thing1 bug noticed while working on thing2
... edit ...
git add ...; git commit --no-edit --fixup=HEAD^
... edit/test some more, discover fixup was not complete
git add ...; git commit --no-edit --fixup=HEAD

在这种情况下,第二个修正的线是fixup! fixup! thing1; rebase只是寻找一个"标题"的提交thing1.)


推荐阅读
  • 本文介绍了如何通过Git日志查找特定的提交记录,并使用git reset --soft命令撤销指定版本的提交,同时保留工作目录中的更改。最后,文章还说明了如何通过强制推送更新远程仓库。 ... [详细]
  • Kubernetes 实践指南:初次体验
    本文介绍了如何通过官方提供的简易示例,快速上手 Kubernetes (K8S),并深入理解其核心概念和操作流程。 ... [详细]
  • 本文总结了在多人协作开发环境中使用 Git 时常见的问题及其解决方案,包括错误合并分支的处理、使用 SourceTree 查找问题提交、Git 自动生成的提交信息解释、删除远程仓库文件夹而不删除本地文件的方法、合并冲突时的注意事项以及如何将多个提交合并为一个。 ... [详细]
  • 探索将Python Spyder与GitHub连接的方法,了解当前的技术状态及未来可能的发展方向。 ... [详细]
  • 页面预渲染适用于主要包含静态内容的页面。对于依赖大量API调用的动态页面,建议采用SSR(服务器端渲染),如Nuxt等框架。更多优化策略可参见:https://github.com/HaoChuan9421/vue-cli3-optimization ... [详细]
  • 本文详细介绍了MySQL InnoDB存储引擎中的Redo Log和Undo Log,探讨了它们的工作原理、存储方式及其在事务处理中的关键作用。 ... [详细]
  • 本文提供了一个详尽的前端开发资源列表,涵盖了从基础入门到高级应用的各个方面,包括HTML5、CSS3、JavaScript框架及库、移动开发、API接口、工具与插件等。 ... [详细]
  • Eclipse 开发环境配置指南:从下载到免安装配置
    Eclipse 是一个广泛使用的开源Java开发环境,掌握其正确的安装与配置方法对于初学者至关重要。本文将详细介绍如何下载、安装及配置Eclipse,确保您的开发环境搭建顺利。 ... [详细]
  • ArcBlock 发布 ABT 节点 1.0.31 版本更新
    2020年11月9日,ArcBlock 区块链基础平台发布了 ABT 节点开发平台的1.0.31版本更新,此次更新带来了多项功能增强与性能优化。 ... [详细]
  • 默认情况下,Git 使用 Nano 编辑器进行提交信息的编辑,但如果您更喜欢使用 Vim,可以通过简单的配置更改来实现这一变化。本文将指导您如何通过修改全局配置文件来设置 Vim 作为默认的 Git 提交编辑器。 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
  • 在Notepad++中配置Markdown语法高亮及实时预览功能
    本文详细介绍了如何在Notepad++中配置Markdown语法高亮和实时预览功能,包括必要的插件安装和设置步骤。 ... [详细]
  • 七大策略降低云上MySQL成本
    在全球经济放缓和通胀压力下,降低云环境中MySQL数据库的运行成本成为企业关注的重点。本文提供了一系列实用技巧,旨在帮助企业有效控制成本,同时保持高效运作。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
author-avatar
纽约纽约MrWaNg
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有