git - Git Rebase 还是 Squash?
问题描述
我从开发创建了一个功能分支,该功能分支包含大约 20 个提交。在将功能分支合并到开发之前,我想将所有提交转换为一个。哪个是完成此任务的最佳方法 git squash 或 rebase 以及如何做到这一点?
解决方案
如果您想将一堆提交压缩到功能分支上的单个提交中,您可以按如下方式进行操作,但是如果这组提交已经被推送到远程,您必须确保没有人在功能分支上工作,因为您'将不得不强制推送到该分支,这意味着重写远程历史记录(如果在公共存储库上工作或更多人在该分支上工作,您通常不希望这样做)。
git checkout FEATURE
(其中FEATURE
必须替换为您的功能分支的名称。git rebase -i HEAD~21
这是假设您想要压缩 20 个最近的提交。如果你有HASH
最旧的提交,你也可以这样做git rebase -i HASH^
- 现在您必须在除第一行之外的所有行上替换
pick
为squash
(或)并保存文件s
- 您必须为此新提交选择一个提交消息。Git 向您显示您正在压缩的提交的消息
- 如果原始提交已经被推送到远程,你将不得不强制 push,因为你正在重写远程历史,用一个新的替换这 20 个提交。如果您在该分支上与更多人一起工作,这通常是您不想做的事情。
git push -f
推荐阅读
- swift - 快速将前导零和尾随零添加到字符串/标签
- c++ - 调用解构后动态分配的内存中存储的值会发生什么?
- arrays - 从对象数组中获取唯一的属性对(Angular 2+)
- python - 在python中返回多个值并将它们附加到数据框的唯一列
- java - 你如何按等级对数组的值进行排序(例如 85-100 是 A 70-84 是 B 等)
- python - Scipy Draw Exponential - 我如何更好地适应这个?
- php - Heroku bash 找不到 php 命令
- java - 当用户加载新图像时,有没有办法更新显示窗口?
- python - 模块可以在终端中导入,但不能在 IDLE 中导入
- python - 如何查找列表实例是否在另一个列表中可用?