压缩数百个原始提交
Squash hundreds of old commits on origin
我犯了一个愚蠢的错误,我不确定解决它的最佳方法。这是我所做的:
- 创建了一个基于样板的 Web 项目。
- 删除了 .git 以在进行初始提交之前删除所有历史记录(大约 500 次提交)
- 几个月后,大约 200 个我自己的项目提交后,我将上游样板文件分支合并到我项目的本地分支中。这增加了来自上游样板的大约 500 个提交。
- 在本地分支中另外进行了 10 次左右的提交,以使我的项目再次使用样板文件的更新
- 将工作本地分支合并到我的开发分支
- 将 develop 分支推送到 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
。
我犯了一个愚蠢的错误,我不确定解决它的最佳方法。这是我所做的:
- 创建了一个基于样板的 Web 项目。
- 删除了 .git 以在进行初始提交之前删除所有历史记录(大约 500 次提交)
- 几个月后,大约 200 个我自己的项目提交后,我将上游样板文件分支合并到我项目的本地分支中。这增加了来自上游样板的大约 500 个提交。
- 在本地分支中另外进行了 10 次左右的提交,以使我的项目再次使用样板文件的更新
- 将工作本地分支合并到我的开发分支
- 将 develop 分支推送到 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
。