如何在旧版本的旧 .tar.gz 存档之上重新设置我的新代码?
How can I rebase my new code atop of old .tar.gz archives of old versions?
我正在从事一个项目,原始开发人员在该项目中为每个新版本创建了 .tar.gz。我获取了最新版本,将其放入 .git,并在其上添加我的补丁。
经过这几个月的多次提交和更改,老开发者让我成为维护者并将其放在github 上。我想要变基,所以所有旧的 .tar.gz 版本都作为单个提交存在,然后将我的提交放在这些提交之上,以将旧版本保留在 git 历史记录中,但保留我现有的提交历史记录。
(因为这是有史以来第一个通过 git 公开推送的提交,我不关心用 rebase 破坏 git-hash 历史。)
这个解释有两个 .git 树:具有单一提交的旧历史树 .tar.gz 我称之为“历史”,另一个我称之为“新”与我的提交需要显示在所有历史提交之上。为此,我尝试了以下操作:
第1部分,准备历史树:
- 用
git init
开始了历史 .git 树
- 一次提交 .tar.gz 并附上对发布的评论
第 2 部分,尝试将历史树变基为远程:
- 在“新”树上我做了
git remote add historical /path/to/historical-tree
- 与
git checkout -b before-historical-rebase
一起去了一个临时测试分支
- 尝试过
git rebase historical
- 有很多标记为“已修改”和一些标记为“已被我删除”的合并冲突
我认为自从最后一个 .tar.gz 的结尾与我第一次提交的开始相同,这将是干净的,但我的提交历史记录在最后一个 .[=47 的边界=] 版本和我的第一次提交并不像我想象的那么干净,或者有更好的方法来做到这一点。
你会如何处理这个问题?
如果我没理解错的话:
- 您的本地开发历史如下所示:
* eacfdd14 (HEAD -> master) commit
* eabddd13 commit
* eaacdd12 commit
* ea0bdd11 2.2 latest version from tar.gz
- 并且您想将其变基于 :
* cd22dfaf (historical) 2.2 latest version from tar.gz
* cd21dfae 2.1 version from tar.gz
* cd20dfad 2.0 version from tar.gz
* cd11dfac 1.1 version from tar.gz
* cd10dfab 1.0 first version from tar.gz
为避免重播最初的“tar.gz 中的最新 2.2 版本”提交,请使用带有以下参数的 git rebase
:
git rebase --onto historical ea0bdd11 master
我正在从事一个项目,原始开发人员在该项目中为每个新版本创建了 .tar.gz。我获取了最新版本,将其放入 .git,并在其上添加我的补丁。
经过这几个月的多次提交和更改,老开发者让我成为维护者并将其放在github 上。我想要变基,所以所有旧的 .tar.gz 版本都作为单个提交存在,然后将我的提交放在这些提交之上,以将旧版本保留在 git 历史记录中,但保留我现有的提交历史记录。
(因为这是有史以来第一个通过 git 公开推送的提交,我不关心用 rebase 破坏 git-hash 历史。)
这个解释有两个 .git 树:具有单一提交的旧历史树 .tar.gz 我称之为“历史”,另一个我称之为“新”与我的提交需要显示在所有历史提交之上。为此,我尝试了以下操作:
第1部分,准备历史树:
- 用
git init
开始了历史 .git 树
- 一次提交 .tar.gz 并附上对发布的评论
第 2 部分,尝试将历史树变基为远程:
- 在“新”树上我做了
git remote add historical /path/to/historical-tree
- 与
git checkout -b before-historical-rebase
一起去了一个临时测试分支
- 尝试过
git rebase historical
- 有很多标记为“已修改”和一些标记为“已被我删除”的合并冲突
我认为自从最后一个 .tar.gz 的结尾与我第一次提交的开始相同,这将是干净的,但我的提交历史记录在最后一个 .[=47 的边界=] 版本和我的第一次提交并不像我想象的那么干净,或者有更好的方法来做到这一点。
你会如何处理这个问题?
如果我没理解错的话:
- 您的本地开发历史如下所示:
* eacfdd14 (HEAD -> master) commit
* eabddd13 commit
* eaacdd12 commit
* ea0bdd11 2.2 latest version from tar.gz
- 并且您想将其变基于 :
* cd22dfaf (historical) 2.2 latest version from tar.gz
* cd21dfae 2.1 version from tar.gz
* cd20dfad 2.0 version from tar.gz
* cd11dfac 1.1 version from tar.gz
* cd10dfab 1.0 first version from tar.gz
为避免重播最初的“tar.gz 中的最新 2.2 版本”提交,请使用带有以下参数的 git rebase
:
git rebase --onto historical ea0bdd11 master