做空者:有没有一种方法可以让git回购推送到远程回购列表(而不是一个单一的“来源”)中并从中提取?

长篇大论:当我在多台电脑上开发一个应用程序时,我经常会遇到这样的情况,这些电脑具有不同的连接能力——比如,一台笔记本电脑在运输途中,一台电脑“a”在某个位置,另一台电脑则“B”在另一台位置。此外,笔记本电脑可能只与“A”或“B”连接,有时两者都连接。

我希望git始终“拉”到它当前可以连接的所有计算机,这样从一台机器跳到另一台机器,继续无缝工作就更容易了。


当前回答

您可以通过以下方式添加遥控器:

git remote add a urla
git remote add b urlb

然后,要更新所有回购,请执行以下操作:

git remote update

其他回答

为了更新遥控器(即拉杆箱),事情变得更容易了。

莱纳斯的声明

可悲的是,根本没有办法用一个数字来伪装别名

elliottcable的答案不再为真。

gitfetch在过去的某个地方学习了--all参数,允许一次性获取所有遥控器。

如果没有全部请求,可以使用--multiple开关来指定多个远程或一个组。

您可以通过以下方式添加遥控器:

git remote add a urla
git remote add b urlb

然后,要更新所有回购,请执行以下操作:

git remote update

添加新远程

git remote add upstream https://github.com/example-org/example-repo.git

git remote -vv

从多个位置提取

git fetch --all

推送至位置

git push -u upstream/dev

添加all remote有点乏味,因为您必须在使用的每台机器上进行设置。

此外,提供的bash和git别名都假定您将推送到所有远程。(例如:我在GitHub和GitLab上维护了一个sshag分支。我添加了上游远程,但我没有权限推送它。)

这里有一个git别名,它只通过包含@的推送URL推送到远程设备。

psall    = "!f() { \
    for R in $(git remote -v | awk '/@.*push/ { print $1 }'); do \
    git push $R $1; \
    done \
    }; f"

从第一个URL克隆:

git clone git@github.com:myuser/myrepo.git

查看当前远程:

$ git remote -v
origin  git@github.com:myuser/myrepo.git (fetch)
origin  git@github.com:myuser/myrepo.git (push)

为原点添加第二个遥控器:

git remote set-url --add origin git@bitbucket.org:myuser/myrepo.git

确认已列出两个遥控器以进行推送:

$ git remote -v
origin  git@github.com:myuser/myrepo.git (fetch)
origin  git@github.com:myuser/myrepo.git (push)
origin  git@bitbucket.org:myuser/myrepo.git (push)

$ git config --local --get-regexp ^remote\..+\.url$
remote.origin.url git@github.com:myuser/myrepo.git
remote.origin.url git@bitbucket.org:myuser/myrepo.git

按顺序推送到所有URL:

git push

要删除远程:

git remote set-url --delete origin git@bitbucket.org:myuser/myrepo.git