代码之家  ›  专栏  ›  技术社区  ›  online Thomas

修改未合并功能分支中所有提交的简单方法?

git
  •  2
  • online Thomas  · 技术社区  · 7 年前

    是否有一种快速的方法可以撤消功能分支中的所有提交(保持更改未过时),并快速执行 git add -p git commit 当你知道如何在事后将变化分组时,创建一个新的更清晰的历史?

    所以假设我有80个提交,其中一些提交是“临时保存”的回复(是的,我本来可以把它藏起来,但我没有)。

    所以我只想撤销特性分支的所有提交。我知道例如我可以 git reset HEAD^N ,我也可以这样做,但是 master/HEAD 还是什么?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Esko    7 年前

    我想你想要的只是 reset with "mixed"-option . 因此,如果您的功能分支处于活动状态,并且希望删除提交,并且仍然保留更改并从主分支重新开始:

    git reset --mixed master
    

    然后你可以做你认为合适的承诺。

        2
  •  1
  •   Mehdi    7 年前

    你可能想做一个 rebase 在交互模式下。

    以下命令显示要编辑的提交历史记录。

    git rebase -i <earlier SHA>
    

    然后:

    • pick 你想保持的承诺,
    • reword 要编辑提交消息的提交
    • 使用 squash fixup 合并承诺
    • 从要忽略的提交中删除要“撤消”更改的行。

    有关更多详细信息,请参阅本文中的“大量撤消/重做”部分: How to undo (almost) anything with Git .