gpt4 book ai didi

git - 批量更改各种存储库中的git remote origin - bash命令

转载 作者:太空狗 更新时间:2023-10-29 14:44:10 25 4
gpt4 key购买 nike

我有一个包含 20 多个 git 存储库的目录。我必须更改每个中的远程源 url。我不想手动执行此操作,而是想使用以下命令:

find . -maxdepth 1 -type d \( ! -name . \) -exec bash -c "cd '{}' && git remote set-url origin git@euxxx-x-x-xxx01.xx.xx.xxx.com:/foo/bar/'{}'.git" \;

问题是,括号 {} 被相对路径替换了,所以我最终得到以下命令:

git remote set-url origin git@euxxx-x-x-xxx01.xx.xx.xxx.com:/foo/bar/./zaz/repo.git

但我只需要

git remote set-url origin git@euxxx-x-x-xxx01.xx.xx.xxx.com:/foo/bar/repo.git

如何实现?

最佳答案

有几次我需要这个,是因为公司 DNS 发生了变化,这导致了 repo 名称的变化。以下脚本有助于实现自动化。我不喜欢在循环中使用目录名称,因为有时文件夹名称与实际的 repo 名称不同,这就是为什么 git 是最好的“真实来源”。

以下脚本将在该脚本所在的目录中的所有文件夹中递归地替换远程名为“origin”的“github.com”到“gitlab.com”的所有实例。您可以使用“SEARCH_ROOT”变量覆盖它

#/bin/bash
SEARCH_ROOT=./
PATTERN=github.com
REPLACEMENT=gitlab.com
find "$SEARCH_ROOT" -type d -name "\.git" -print | while read -r REPO;
do
pushd "$REPO/../" > /dev/null || continue
NEWURL=$(git remote get-url origin | grep "$PATTERN" | sed "s/$PATTERN/$REPLACEMENT/g")
[ -z "$NEWURL" ] || git remote set-url origin "$NEWURL"
popd > /dev/null || exit 1
done

关于git - 批量更改各种存储库中的git remote origin - bash命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38313733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com