我需要重写一些修订的历史,以便“破解”一些与git-svn同步的分支(我指的是这里的修订.不想重写整个分支的历史)。如果我们拿出git-svn的细节,我要做的基本上是重新创建一个分支的一个部分的历史,重新定义修订的父母(只有父母被修改,没有其他)。
这样,您就可以更清楚地了解我打算做的事情:我希望从一个分支中删除一些修订,并将它们替换为我将手动创建的一个修订(使用提交树.我将使用我将从树枝上删除的最新版本中的树)。然后,我将重新创建的修订,是“顶部”的修订,我删除了。考虑到我要在历史上替换一个修订版,我可以“重写”修改他们的父母的孩子版本,以使用“重写”过程本身产生的新版本(把它想象成一个樱桃采摘或重基操作……)但我不想做樱桃采摘或重新基地,因为我已经有树从原来的修订本身,我试图重写,对吗?)。
似乎git 提交树是我可以用来完成这个任务的工具(我可以使用我想重写的修订版的树对象,然后我将设置修订版的父级)。然而,像message、author、committer这样的细节用提交树来定义并不那么简单(必须使用环境变量,可以从stdin读取消息)。如果不使用提交树,最简单的方法是什么?
发布于 2017-06-10 17:06:13
跟进我原来的问题。还记得当初是怎么回事吗?我想重写svn分支的历史记录(本地更改)。在svn上,分支不会被触及),这样我就可以创建一个“真正的合并”,而不是一系列与正在合并的分支无关的修订。
最后,我创建了一个基于git提交树的解决方案。我已经把它发表在githug上,以防有人试图达到同样的目的。
rewrite/blob/master/blend-git.txt
干杯!
https://stackoverflow.com/questions/44294077
复制相似问题