压缩数百个原始提交

Squash hundreds of old commits on origin

我犯了一个愚蠢的错误,我不确定解决它的最佳方法。这是我所做的:

我的 git 历史记录现在包含了我最初删除的第一个项目提交之前的所有样板历史记录。它还有数百个提交散布在我的提交中间。

我想做的是将合并中的所有内容从上游压缩到我正在使用的本地分支中,合并到一个提交中。有没有一种比较轻松的方法可以做到这一点?

此外,我还需要重写 origin 的历史记录。这是一个私人仓库,只有几个人在使用它。我该怎么做?

What I'd like to do is squash everything in the merge from upstream into the local branch I was using into a single commit. Is there a somewhat painless way to do this?

使用您的存储库的两个本地克隆:

  • 在一个中,你检查你想要压缩的各种状态(比如你的上游合并提交 SHA1)
  • 在另一个中,你做一个 git reset --hard 到仍然正确的第一个提交(即历史良好的地方)

然后,从第二个开始,您可以 git --work-tree=/path/to/first/clone add . 从第一个开始的所有内容,然后提交。

重复第一个 repo 的各种状态,你想压缩成一个提交(通过添加第一个 repo 的工作树并提交在第二个 repo 中实现)。

然后git push --force