壁球首先N提交git历史/保持其余的原样

Max*_*Noe 7 git rebase

请考虑以下问题:

  • 私有项目在早期阶段包含一些凭据
  • 我们想要开源
  • 我们需要摆脱历史上的凭据
  • 凭据不在单个文件中,而是在代码中
  • 具有多个合并,拉取请求等的复杂历史

我想做的事:

将所有提交从root用户提交到具有干净状态的任意提交到一个大的"初始提交".

当我做:

git rebase -i --root
Run Code Online (Sandbox Code Playgroud)

并将第一次提交压缩在一起:

pick Initial commit \
fixup dirty1        |
fixup dirty2        | Squash these to one, to remove credentials.
fixup dirty3        |
fixup clean1        /
pick clean2
pick clean3
...
...
Run Code Online (Sandbox Code Playgroud)

我必须重新设置所有内容并在此之后再次解决所有合并冲突.

我怎样才能压缩前N个提交而不必解析整个历史记录,包括N + 1提交后的合并冲突.

Ted*_*val 1

您可以git-rerere重复使用相同的冲突解决方案。

唯一的缺点是,启用 rerere后,您必须再次解决这些问题,然后它才能自动重用解决方案。