gpt4 book ai didi

git - 压缩数百个原始提交

转载 作者:太空狗 更新时间:2023-10-29 14:11:23 24 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

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?

使用你的 repo 的两个本地克隆:

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

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

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

然后 git push --force

关于git - 压缩数百个原始提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42125845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com