Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 以编程方式重写git历史记录_Python_Git_Gitpython_Git Rewrite History - Fatal编程技术网

Python 以编程方式重写git历史记录

Python 以编程方式重写git历史记录,python,git,gitpython,git-rewrite-history,Python,Git,Gitpython,Git Rewrite History,我想以编程方式重写我的一个repo的历史,例如使用gitpython。 这样做的目的是读取现有存储库,并在经过一些修改后将其每个提交重新应用到新的存储库: 不同的提交时间 如果文件与某个模式匹配,则将某些提交拆分为子模块,并添加对子模块提交的引用 使用不同的提交消息 使用gitpython,我可以读取提交历史树和所有相关信息,但我还没有找到在新回购协议上提交内容的方法,当信息必须从另一个回购协议复制时,就再也没有成功了 有没有一种方法可以通过编程来实现这一点? 我想一定有办法,因为这或多或少

我想以编程方式重写我的一个repo的历史,例如使用gitpython。 这样做的目的是读取现有存储库,并在经过一些修改后将其每个提交重新应用到新的存储库:

  • 不同的提交时间
  • 如果文件与某个模式匹配,则将某些提交拆分为子模块,并添加对子模块提交的引用
  • 使用不同的提交消息
使用gitpython,我可以读取提交历史树和所有相关信息,但我还没有找到在新回购协议上提交内容的方法,当信息必须从另一个回购协议复制时,就再也没有成功了

有没有一种方法可以通过编程来实现这一点? 我想一定有办法,因为这或多或少可以通过手工完成,一个接一个地完成

非常感谢

你可以获得灵感(或直接使用),即:

  • 用Python编写,并且
git-filter-repo
可以处理拆分存储库,但不必在同一步骤中添加树SHA1作为子模块存储库的gitlink。

尽管如此,它仍然可以扩展到您需要的地方。

您想使用gitpython实现这一点有什么特别的原因吗?一般来说,
git-filter-branch
提供了一个与语言无关的接口,您可以从任何语言(包括shell)使用它。没有充分的理由,但我不太容易使用git-filter-branch语法。我看不到在拆分子模块时合并子模块历史的任何方法。我可以一起处理所有提交的时间更改,这在python中对我来说非常容易。基本上,我会觉得在我做的事情上有更多的控制权。。。