【发布时间】:2020-03-21 22:33:05
【问题描述】:
我想以编程方式重写我的一个仓库的历史,例如使用 gitpython。 这个想法是读取现有存储库,并在进行一些修改后将其每个提交重新应用到新的:
- 不同的提交时间
- 将某些提交拆分到子模块,如果文件匹配某些模式,则添加对子模块提交的引用
- 使用不同的提交信息
使用 gitpython,我可以读取提交历史记录树和所有相关信息,但是我还没有找到在新仓库上提交某些内容的方法,当必须从另一个仓库复制信息时,就没有成功了。
有没有办法以编程方式做到这一点? 我想一定有一种方法,因为它或多或少可以手动完成,一次提交。
非常感谢!
【问题讨论】:
-
您是否有特殊原因要为此使用 gitpython?一般来说,
git-filter-branch提供了一个与语言无关的界面,您可以在任何语言中使用,包括 shell。 -
没有强有力的理由,但我对 git-filter-branch 语法并不容易。在拆分子模块历史时,我看不到任何合并子模块历史的方法。我可以一起处理所有提交的时间更改,这在 python 中对我来说非常容易。基本上我会觉得自己在做的事情更加可控......
标签: python git gitpython git-rewrite-history