当前位置:  开发笔记 > 编程语言 > 正文

如何在没有集线器的情况下自动在GitHub上找到派生的上游URL?

如何解决《如何在没有集线器的情况下自动在GitHub上找到派生的上游URL?》经验,为你挑选了1个好方法。

分叉并克隆GitHub上的存储库后,通常会为fork配置上游远程:

$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPO.git

是否可以在不使用集线器的情况下自动(以编程方式)查找上游URL,以便为上述命令创建别名(或脚本)?



1> Bertrand Mar..:

根据@Vampire的答案,您可以将以下bash函数添加到~/.bashrc

function add_upstream() {
    url=$(git config --get remote.origin.url)
    repo=${url##*/}
    user=$(echo "$url" | awk -F/ '{print $4}')
    remote=$(curl -s "https://api.github.com/repos/$user/$repo" | jq -r '.parent.clone_url')
    if [ "$remote" != "null" ]; then
        git remote add upstream "$remote"
    else
        echo "no upstream found"
    fi
}

它提取用户和存储库值,并使用jqJSON解析器进行解析.parent.clone_url

如果没有jq,可以使用:

function add_upstream() {
    url=$(git config --get remote.origin.url)
    repo=${url##*/}
    user=$(echo "$url" | awk -F/ '{print $4}')
    remote=$(curl -s "https://api.github.com/repos/$user/$repo" | awk 'match($0, /\"clone_url\"\s*:\s*\"(.*)\"/, a) {last=a[1]}END{print last}')
    if [ ! -z "$remote" ]; then
        git remote add upstream "$remote"
    else
        echo "no upstream found"
    fi
}

然后,将其与add_upstream命令一起使用

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有