git - 在 git rebase 期间对帅哥的“交互式审查”
问题描述
我有一个提交列表,我想在合并之前对其应用一些最终更改:
- A1 Add doc for widget
- A2 Fix error in foo#process
- A3 Add spurious new lines
...
- An ...
我想:
- 编辑一些提交的内容
- 删除一些提交
- 接受一些提交
这看起来像是 的工作git rebase -i
,但有相当多的提交,我不能 100% 确定它们都是“卫生的”(也就是说,提交消息完全涵盖了更改)。我不想不小心丢下任何东西。
git中是否有一个过程基本上会依次向我显示每个提交及其分阶段的大块,让我“确定提交”“等待,编辑,提交”或“放弃”?
将所有提交设置为“编辑”只会让我进入git status
没有显示任何更改的状态,这意味着我必须与之前的提交、重置、编辑等进行比较。这非常乏味。
基本上,我想要一系列连续的提示,显示“就在”提交之前的 git 树,并带有脏树。
解决方案
git rebase
与--exec
标志一起使用
您可以使用git rebase
with--exec
在每个交互式变基步骤中自动重置为先前的提交:
git rebase --exec "git reset --soft head^" <your other rebase args go here>
这是如何工作的:
- 将在每一步
reset head^
回滚head
到先前的提交。 - 该
--soft
标志导致索引不会回滚,因此当前提交的更改将被暂存并准备好供您根据需要提交或修改。 - 因为会
reset head^
导致索引未提交更改,所以交互式 rebase 将在每一步停止,就像您将 todo 文件中的所有pick
s 更改为s 一样。edit
--soft
如果您希望在每个步骤中手动将更改重新添加到索引中,则可以省略。
推荐阅读
- javascript - $FlowExpectedError 有什么作用?
- excel - 确保两个单元格始终具有相同颜色的宏
- database - 如何使用 Oracle SQLPlus 使用 SSH 连接类型连接到数据库?
- c# - 即使有私有字段,也强制使用私有属性?
- sql - 如何以非平凡的顺序对 SQL 输出进行排序?
- perl - 使用 Perl 将字符串加一
- spring - 如何为在 EC2 实例上运行的 Spring Boot 项目配置 AWS RDS?
- postgresql - DB2 到 postgres
- python - 无法使用硒定位元素并确定 ID
- javascript - 移动设备隐式流上的静默刷新令牌