将更改推送到原点(上游)后如何将更改推送到另一个远程?
How to push changes to another remote after pushing them to origin (upstream)?
我正在使用 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
。
我做错了什么?
post-receive
挂钩是服务器端挂钩,这意味着只有在远程安装它才有意义,在这种情况下很可能是不可能的。例如,参见 here or here。
实现您想要的效果的一种方法是改用 pre-push
挂钩。在这种情况下,当您推送到 Azure 时,脚本将首先 运行(推送之前),并且仅当脚本以状态 0 退出(即成功)时才会尝试推送。
为了回答我自己的问题,我发现 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
我正在使用 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
。
我做错了什么?
post-receive
挂钩是服务器端挂钩,这意味着只有在远程安装它才有意义,在这种情况下很可能是不可能的。例如,参见 here or here。
实现您想要的效果的一种方法是改用 pre-push
挂钩。在这种情况下,当您推送到 Azure 时,脚本将首先 运行(推送之前),并且仅当脚本以状态 0 退出(即成功)时才会尝试推送。
为了回答我自己的问题,我发现 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