我正在尝试保持同步两个托管在两个不同站点(Github和Bitbucket)的存储库跟随指南我添加了一个新的源URL到配置,现在我的.git / config看起来像这样:
[remote "origin"]
url = https://rrev@bitbucket.org/rrev/sampclient.git
fetch = +refs/heads/*:refs/remotes/origin/*
url = https://github.com/rrev/SAMPClient.git
现在Github和Bitbucket拥有相同的提交和相同的源代码,但是当我尝试将提交推送到两个存储库时,Visual Studio仅将提交发送给Github而将Bitbucket抛在脑后。
看起来Visual Studio与两个网址不兼容,因为当我在url = https://github.com/rrev/SAMPClient.git
中移动[remote "all"]
进行测试时,Visual Studio会正确地将提交发送到Bitbucket,当我放回Github时url它检测到存储库位于本地存储库后面。
这是Visual Studio的限制吗?因为当我使用命令行推送更改时(使用git push
),两个存储库会正确同步。
答案 0 :(得分:1)
这是Visual Studio的限制。如何使用git push
所有工作正常的方法。
-Anton Ego
答案 1 :(得分:1)
如果你需要两个遥控器,你需要两个遥控器。 我完全错了,git push
会尊重多个网址。 我可以'告诉我这是故意还是偶然的。 According to libgit2 this is a deliberate feature of Git for exactly your situation 。
我的猜测是Visual Studio没有使用git命令行,而是使用诸如libgit2(确认)之类的库。对于使用Git的应用程序而言,libgit2是一个更快,更可靠的选项(特别是在Windows上),而不是包装命令行。 libgit2与Git命令行没有直接的类比,特别涉及使用遥控器。 libgit2遥控器只能有一个网址it's baked into their data structure and API。
我的建议是从命令行推送,或者两个有两个遥控器并记得推送到它们两个,或者决定其中一个是镜像并设置一个自动进程来同步它,或者(IMO最好)决定您不需要在冗余开发服务上维护相同的存储库。