将git远程名称重命名为"上游"

时间:2015-05-01 12:01:05

标签: windows git shell git-remote git-fork

我的git设置有一个小问题。我经常使用分叉存储库。为了分叉它们,我使用GitHub上的按钮。之后,命令git remote -v显示我"起源"和"原始用户名"。

"原始的用户名"现在是上游分支,我可以从中提取变更并创建拉取请求。我希望这个命名为"上游"虽然。 这样可以更容易在不同的叉子上使用相同的命令,我甚至可以用它创建别名。

所以我知道我可以用git remote rename original-username upstream更改远程名称,但这意味着我必须为每个分支执行此操作,每次我在机器上获得该分叉,并且我必须使git远程 - 先是等等,我很懒:P
每个分支上的原始用户名也不同。

所以我的问题是:
是否有可能将远程分支(从不同的名称)重命名为上游,可能使用酷的别名功能或小脚本?

我的梦想是这样的:

[alias]
    setupstream = "!f(){ git remote rename $oldupstream upstream; };f"

$oldupstream应该以某种方式自动获取。

1 个答案:

答案 0 :(得分:1)

假设本地存储库只有两个远程配置,其中一个是origin而另一个是你要重命名的那个应该有效。

setupstream = "!f() { \
    local rem=$(git remote | grep -v '^origin$'); \
    if [ \"$(wc -l <<<\"$rem\")\" -gt 1 ]; then \
        echo 'Too many remotes.' >&2; \
        return; \
    fi; \
    if [ -z \"$rem\" ]; then \
        echo 'No non-origin remote found.' >&2; \
        return; \
    fi; \
    if [ \"$rem\" = upstream ]; then \
        echo '\"upstream\" remote already exists.'; \
        return; \
    fi; \
    git remote rename \"$rem\" upstream; \
    echo \"Renamed $rem to upstream.\"; \
}; f"