3

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

  • 基于样板创建了一个 Web 项目。
  • 在进行初始提交之前删除 .git 以删除所有历史记录(大约 500 次提交)
  • 几个月后,我自己的项目提交了大约 200 个,我将上游样板分支合并到我项目的本地分支中。这从上游样板中增加了大约 500 个提交。
  • 在本地分支中进行了 10 次左右的额外提交,以使我的项目使用样板中的更新再次工作
  • 将工作的本地分支合并到我的开发分支中
  • 将开发分支推送到原点
  • 在本地开发分支上再创建一个提交(未推送到原点)
  • 在尚未合并到开发的另一个本地分支上创建了大约十几个提交(未推送到原点)

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

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

另外,我还需要重写关于起源的历史。这是一个私人仓库,只有几个人在使用它。我该怎么做呢?

4

1 回答 1

2

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

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

  • 一方面,您检查要压缩的各种状态(例如您的上游合并提交 SHA1)
  • 另一方面,您对仍然正确的第一个提交执行 git reset --hard (即历史记录良好的地方)

然后,从第二个开始,你可以git --work-tree=/path/to/first/clone add .从第一个开始,然后提交。

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

然后git push --force

于 2017-02-09T05:49:25.447 回答