微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

git filter-repo --refs <commit..range>不带标签

如何解决git filter-repo --refs <commit..range>不带标签

我有几个大型的长期回购协议,我将它们合并到一个回购协议中,每个当前回购协议都作为新回购协议的子目录:

oldrepo1
oldrepo2

becomes

newrepo/oldrepo1
newrepo/oldrepo2

我正在使用git filter-repo做几件事,例如删除一些过时的已删除文件夹,删除文件,向下移动根文件夹(需要合并到新的repo中),将标签移动到子文件夹(例如tag1-> oldrepo1 / tag1),并修改与迁移相关的各种信息性的提交消息

我正在经历一个中间存储库以进行历史记录重写,因为我不能费力地更改原始存储库,因此我有一个这样的迁移工作流程:oldrepo1-> oldrepo1_tmp-> newrepo,其中oldrepo1_tmp是我完成了初始清理和历史记录更改的地方。

我已经完成了初始迁移,但是从这个初始迁移到我所有的开发人员都将搬到新位置之间需要一段时间(几周),我需要进行一些定期的向前迁移以保持新的迁移在此过渡期间回购最新信息。

为了进行向前迁移,请在我的oldrepo1克隆(原始repo本地克隆)中,然后运行:

git filter-repo <***> --target oldrepo1_tmp --refs <last_commitid_migrated>..HEAD 

其中是我对原始迁移所做的所有相同修改的一组选项。

换句话说,我只是在修改自上次迁移以来所有提交的历史记录。

这对于提交工作正常,但是并没有使在该提交范围内创建的标签超过

我发现了这个线程: Git filter-branch to filter-repo : tags not rewritten

建议使用--refs $branch $(git tag -l)

但是要添加所有标签(其中有数百个)。

有没有办法获取仅在给定参考范围内创建的标签?也就是说,在 .. 之间创建的任何标签(我专门只在一个分支[master]中工作)

或者,当使用--refs arg时,是否有某种方法告诉git-filter-rep也包括该范围内的标签

解决方法

git log具有--decorate=full--decorate-refs=pattern选项。

您还可以使用git show-ref和grep通过其输出:

git show-ref | grep -f <(git rev-list <commit range>)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。