【问题标题】:How to push changes to another remote after pushing them to origin (upstream)?将更改推送到源(上游)后如何将更改推送到另一个远程?
【发布时间】:2020-06-15 22:35:17
【问题描述】:

我正在使用 Visual Studio 的 Git 集成将我的更改推送到 https://dev.azure.com。今天我创建了一个 GitHub 存储库,并使用 Visual Studio Git 根文件夹中的这些命令将我的主要更改添加为我的 GitHub 存储库的远程:

git remote add upstream https://github.com/user/repo
git push upstream master

现在我在 GitHub 中获得了所有更改的副本。当我在 Visual Studio 中进行新的更改并将它们推送到 https://dev.azure.com 时,我也希望将这些更改推送到 GitHub。我听说过 Git 钩子。所以我在post-receive 脚本中写了这个:

#!/bin/sh
git push upstream master
exit 0

但是当我从 Visual Studio 推送我的更改时,我的 GitHub 存储库没有更新,所以我不得不手动执行 git push upstream master

我做错了什么?

【问题讨论】:

    标签: git github githooks git-push


    【解决方案1】:

    post-receive 钩子是服务器端钩子,这意味着只有将它安装在远程服务器上才有意义,在这种情况下,这很可能是不可能的。例如,请参阅 herehere

    实现您想要的一种方法是使用pre-push 挂钩。在这种情况下,当您推送到 Azure 时,脚本将首先运行(在推送之前),并且仅当脚本以状态 0 退出(即成功)时才会尝试推送。

    【讨论】:

    • 我也试过pre-push,但我认为有问题(Azure?)。当我从 Visual Studio 推送时,操作卡住了。当我从命令行尝试git push 时,它仍然卡住,所以我按Ctrl+C,并打印了一些警告/错误消息。无论如何,经过一番研究,我找到了一篇解释如何做到这一点的文章(我已将其发布为答案)。
    【解决方案2】:

    为了回答我自己的问题,我找到了this article,它清楚地解释了如何添加遥控器以同时推送(使用一个git push 命令)。

    简而言之,您可以通过这种方式配置多个遥控器同时推送:

    git remote add all first_remote_url
    git remote set-url --add --push all first_remote_url
    git remote set-url --add --push all second_remote_url
    

    就是这样!现在您可以使用以下命令向两个遥控器推送:

    git push all
    

    奖励:虽然您无法从多个存储库中提取信息,但您可以这样做以从所有远程存储库中获取信息:

    git fetch --all
    

    【讨论】:

    • 和这样编辑配置文件是一样的stackoverflow.com/a/20090336?
    • @Alex78191 我认为是的,这基本上应该是git remote set-url 命令的作用
    猜你喜欢
    • 2018-10-10
    • 2020-04-21
    • 2011-06-09
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 2013-04-16
    相关资源
    最近更新 更多