关于git的配置,
[url "[email protected]:"]
insteadOf = https://gitlab.com/
[url "https://bitbucket.com/other/"]
insteadOf = https://github.com/some/
字符串
Git可以更改远程仓库的源代码以及获取特定URL的方式。
因此,有了一些特定的repo url,人们如何解析目标url,git最终会用来克隆repo(而不是实际克隆它)。
使得
https://github.com/some/repo.git => https://bitbucket.com/other/repo.git
https://gitlab.com/any/repo.git => [email protected]:any/repo.git
https://bitbucket.com/no/change.git => https://bitbucket.com/no/change.git
型
理论上,这可以通过git config --get-regexp ...
命令上的grep
/sed
/awk
等管道系列来完成
然而,如何通过git
本身来实现相同的功能,而不添加额外的自定义逻辑,并且完全按照git
的方式来实现,例如
git resolve-remote https://github.com/some/repo.git
型
或者可能使用一些变通方法,但实际上并不涉及git clone
命令。
2条答案
按热度按时间qyzbxkaa1#
我没有找到一个简单的命令来解析配置了
url..insteadOf
的远程URL。但是我找到了一个使用暂时空仓库的方法。创建一个新仓库,配置URL重写(全局或本地;对于下面的示例,我使用本地),添加一个远程,向Git请求重写的URL,删除仓库。示例:字符串
让我们验证一下:
型
配置中的URL没有被重写。现在魔术:
git remote get-url
打印重写的URL:型
清理:
型
我可以创建一个shell脚本,但它的缺点是-它将创建/删除每个URL一个仓库。如果你要检查许多URL,这可能会很慢。对于许多URL,创建一个仓库,添加远程,重写URL,然后删除仓库。
sr4lhrrt2#
这是辉煌的@博士。这正是我所期望的方式找到!而且它真的有效!
即使你提到的缺点,我可以看到可以黑客攻击
由于我们并不真正关心仓库数据是否一致,我们可以手动组合其配置,而无需调用
git
本身。使得
1.先决条件
字符串
1.在批量输入urls配置中编写
型
这将在视图中将批量远程添加到配置中(无论其数量如何),
型
1.然后按如下方式查询所有Map的URL
型
这导致
型
谢谢你!