首页 > 解决方案 > 在 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

解决方案


git rebase--exec标志一起使用

您可以使用git rebasewith--exec在每个交互式变基步骤中自动重置为先前的提交:

git rebase --exec "git reset --soft head^" <your other rebase args go here>

这是如何工作的:

  1. 将在每一步reset head^回滚head到先前的提交。
  2. --soft标志导致索引不会回滚,因此当前提交的更改将被暂存并准备好供您根据需要提交或修改。
  3. 因为会reset head^导致索引未提交更改,所以交互式 rebase 将在每一步停止,就像您将 todo 文件中的所有picks 更改为s 一样。edit

--soft如果您希望在每个步骤中手动将更改重新添加到索引中,则可以省略。


推荐阅读