git - 为什么 git rebase HEAD~3 --autosquash 不压缩修复?
解决方案
请务必使用-i
带有 的选项--autosquash
。新版本的 Git 可能不需要它,但旧版本会(而且它不会受到伤害)。
至于您的评论:变基很复杂。
特别git rebase
是前端,它解析选项和其他参数,然后调用几个不同的 rebase 实现之一:
git-rebase--am
是最初的变基,甚至可以追溯到仍在使用的最古老的当前 Git 版本(1.7 时代)之前。它使用git format-patch
andgit am
并且是能力最差(但最快)的 rebase。git-rebase--interactive
是直到 Git 2.13 版之前所有交互式变基的标准后端。它使用git cherry-pick
.git-rebase--merge
是使用cherry-pick的非交互式rebase的变体。这是您使用 , 或 获得的变基形式git rebase -m
,除非您也添加显式,在这种情况下您将获得交互式后端。git rebase -s strategy
git rebase -X eXtended-argument
-i
git-rebase--preserve-merges
是在 Git 版本 2.19.0 中分离出来的一个特殊用途的后端。它实现了旧样式git rebase -p
。(新的git rebase -r
需要下面提到的新的基于音序器的变基。)从 Git 2.13 开始,一直到 Git 2.19(当保留合并后端被拆分时),交互式 rebase 后端变得更加强大(并且在 shell 脚本中编写得更少,在 C 中编写得更多),现在使用 Git 的序列器代码,之前主要实现
git cherry-pick
和git revert
.从 Git 2.20 开始,
git-rebase--interactive
根本不再存在(但git rebase -i
仍然会进行交互式变基)。从 Git 2.23 开始,git-rebase--am
不再作为单独的后端脚本存在(但这种变基风格仍然存在,只是处理得更直接)。从 Git 2.26 开始,
git rebase
不再am
默认使用样式机制。(这可能意味着您不需要单独的-i
选项,但我自己的 Git 安装不是这个新的,所以我没有测试它。)
该--autosquash
选项需要使用交互式后端机制,并要求 Git 生成可能应用的提交列表,以便代码可以检查fixup!
和squash!
提交主题。特别是使用交互式机器会禁用“已经是最新的”检查。
推荐阅读
- azure - Azure 可用性集或区域 vm 自动打开
- mysql - 如何通过从两个数据库中搜索同一表中的特定名称来获取特定列数据?
- python - 无法使用我在 Singularity 容器中手动安装的 Python。为什么?
- r - Rstudio 绘制多线
- php - 将 URL 中的 id 传递给模式
- html - 无论如何,只有一次 ngfor 迭代可以在不同的 col 中划分行?
- c++ - MPI_Scatter 根进程退出信号 (6)
- reactjs - 在类中使用 React Hooks
- c++ - 法线贴图工作不正确,奇怪的半光效果
- read-the-docs - 如何正确开始使用 .readthedocs.yml