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

Git 修改未合并功能分支中所有提交的简单方法?,git,Git,有没有一种快速的方法可以撤消功能分支中的所有提交(保持更改未过时),并快速执行git add-p和git commit的一些循环,以便在知道如何在事后对更改进行分组后,创建一个新的更清晰的历史记录 假设我在一个巨大的功能上有80次提交,其中一些提交是所谓“临时保存”的还原(是的,我本可以把它藏起来,但我没有) 因此,我只想撤消功能分支的所有提交。例如,我知道我可以git重置磁头^N,我可以用master/HEAD或其他东西做同样的事情吗?您可能需要在交互模式下执行rebase 以下命令显示要编辑

有没有一种快速的方法可以撤消功能分支中的所有提交(保持更改未过时),并快速执行
git add-p
git commit
的一些循环,以便在知道如何在事后对更改进行分组后,创建一个新的更清晰的历史记录

假设我在一个巨大的功能上有80次提交,其中一些提交是所谓“临时保存”的还原(是的,我本可以把它藏起来,但我没有)


因此,我只想撤消功能分支的所有提交。例如,我知道我可以
git重置磁头^N
,我可以用
master/HEAD
或其他东西做同样的事情吗?

您可能需要在交互模式下执行
rebase

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

git rebase -i <earlier SHA>
git-rebase-i
然后:

  • pick
    提交您想要保留的内容
  • 重写
    要编辑其提交消息的提交
  • 使用
    squash
    fixup
    组合提交
  • 删除行以“撤消”您希望忽略的提交中的更改

有关更多详细信息,请参阅本文中的“大规模撤消/重做”部分:。

我认为您想要的只是。因此,如果您的功能分支处于活动状态,并且希望删除提交,但仍保留更改并从主分支重新开始:

git reset --mixed master

然后,您可以执行您认为合适的提交。

这可能是许多情况下的解决方案,但我的问题是,某些提交非常糟糕,挤压和重写ing无法将其删除。仍然是+1,因为对于正常的重定基址,这只是一个解决方案。所以实际上我一直在搜索一些我认为很复杂的东西,但实际上它只是
git reset origin/master
,因为
--mixed
是默认值,我想重新添加从当前master更改的所有内容。Funny@ThomasMoors是的,我也从文档中读到-,mixed确实是默认值,但为了清晰起见,我还是把它留在这里。在这个行业,我很高兴有时候最简单的解决方案就足够了:)