我需要重写一些修订的历史记录,以便" hack"一些与git-svn同步的分支(我的意思是 revisions 在这里......不想重写分支的整个历史)。如果我们取出git-svn的细节,我要做的就是重新创建一个分支的一部分的历史,重新定义修订的父母(只有父母被修改,没有别的)。
这样你就可以更清楚地了解我打算做什么:我想从分支中删除一些修订版本,并用一个我将手动创建的修订版本替换它们(带有commit-tree ...我将使用我将从分支中删除的最新版本中的树)。然后我将重新创建放在顶部"的修订版。我删除的修订版。鉴于我在历史上取代修订版,我可以重写"修改父母的孩子修改使用"重写"过程本身(想象它就像樱桃挑选或变形操作......只是我不想做樱桃挑选或变形,因为我已经拥有原始修订版本中的树木了我自己。我想改写,对吧?)。
看起来git commit-tree 将是我可以用来完成这项工具的工具(我可以使用我想要重写的修订版本的树对象然后我将设置修改的父母......好吧,数以百计的修订版)然而详细信息,如消息,作者,提交者并不是那么简单,用commit-tree定义(必须使用环境变量,消息可以读取)来自stdin)。如果不使用commit-tree,那么最简单的方法是什么?
答案 0 :(得分:0)
跟进原来的问题。首先要记住它的含义?我想重写svn分支的历史记录(在本地更改 。在svn repo上,分支机构不会被触及),这样我就可以创建一个"真正的合并"而不是与正在合并的分支无关的一系列修订。
我最终创建了一个基于git commit-tree的解决方案。我已经在githug上发布了它,以防任何人试图达到同样的目的。
https://github.com/eantoranz/git_svn_rewrite/blob/master/blend-git.txt
干杯!