git - 有没有办法在 git rebase 中自动丢弃修改过的提交?
问题描述
以下情况是我在使用 Git 时每隔一段时间就会发生的情况。我从线性历史开始,有两个分支。master目前指向C。分支A是我要求我的同事合并到master的分支,分支B有未完成的工作我还没有公开。
C
\
A - B
在代码审查期间,我的同事注意到分支 A 中的最后一次提交中有一个错字。我没有创建一个新的提交来修复错字,而是修改了有问题的提交并将其合并到 master 中。Master 现在指向 A',这是更正错字的提交。
C - A'
\
A - B
下一步是对未完成的工作进行rebase。我希望最终结果如下所示:
C - A'
\
B
但是,默认情况下,Git 假定 A 和 A' 是完全不相关的提交,它会尝试这样做:
C - A'
\
A - B
这最终使我们想到了我的问题:
有没有办法让 git 自己弄清楚我们不需要在 rebase 中包含 A,因为 A' 已经存在?或者这是总是需要人工干预来删除重复提交的情况之一?
解决方案
它不能满足您的要求,但是在这些情况下,我已经习惯于始终使用git rebase -i
. 这使您可以:
A
首先从待办事项列表中删除。- 避免创建一个
A'
还不是B
. 相反,您可以将错字修复提交为D
:
然后在运行时C \ A - B - D
git rebase -i C
,您可以重新排序待办事项列表以D
对A
. 然后你会得到:
这是您想要的最终状态。(如果您通过 提交C \ A' - B
D
,则在运行ifgit commit --fixup A
时会自动进行重新排序。)git rebase -i
git.autosquash = true
推荐阅读
- java - 构建失败的 android,弃用的功能
- vue.js - 捏放大vue js
- docker - 使用 docker-compose 构建开发和部署管道
- xamarin.forms - 如何在 Xamarin 中更改 MasterMainPage 的导航栏颜色
- r - 按时间顺序排序带时间戳的数据时出现不希望的输出
- regex - 选择“不匹配”的数据
- google-maps - 查询所选国家/地区的自动完成限制(不是带地图的地方自动完成)
- dialogflow-es - 谷歌对话流如何匹配文本略有不同的实体?
- php - 如何修复向 MySQL 发送查询?PHP 中的错误
- node.js - 构建期间的 ES6 错误