【发布时间】:2021-12-16 16:05:09
【问题描述】:
我正在开发一个项目,其中原始开发人员为每个新版本创建了 .tar.gz。我获取了最新版本,将其放入 .git,并在其上添加了我的补丁。
在过去几个月的多次提交和更改之后,老开发者要求我成为维护者并将其放在 github 上。我想要 rebase 以便所有旧的 .tar.gz 版本作为一个提交存在,然后将我的提交放在这些提交之上,以将旧版本保留在 git 历史记录中,但保留我现有的提交历史记录。
(因为这是有史以来第一次通过 git 公开推送的提交,所以我不在乎用 rebase 破坏 git-hash 历史记录。)
这个解释有两个 .git 树:具有单次提交 .tar.gz 的旧历史树,我称之为“历史”,另一个我称之为“新”,我的提交需要显示在所有历史之上提交。为此,我尝试了以下方法:
第 1 部分,准备历史树:
- 用
git init启动了一个历史.git 树 - 使用 cmets 一次提交一个 .tar.gz 以进行发布
第 2 部分,尝试将历史树重新定位为远程:
- 在“新”树上我做了一个
git remote add historical /path/to/historical-tree - 使用
git checkout -b before-historical-rebase前往临时测试分支 - 试过
git rebase historical - 有很多合并冲突标记为“都已修改”和一些“被我删除”
我认为自从最后一个 .tar.gz 的结尾与我第一次提交的开始相同,这将是干净的,但是我在最后一个 .tar.gz 版本的边界的提交历史和我的第一个commit 没有我想象的那么干净,或者有更好的方法来做到这一点。
你会如何处理这个问题?
【问题讨论】:
标签: git github release tar rebase