Visual Studio Team Explorer GitHub-当您有两个遥控器时,如何指定用于传出提交的遥控器?

问题描述

我有一个SF 5181845相同的问题,就是希望使用GitHub上的公共仓库作为我项目的起点,同时又保留了将公共仓库中所做的任何更改合并到其中的能力。这似乎是一种常见情况。

我首先使用Git命令行实用程序在GitHub上创建了一个空的私有仓库。然后,我将公共仓库从github克隆到了我机器上的本地仓库,并将其远程名称从“ origin”重命名为“ upstream”。接下来,在最终将我的本地存储库推送到它之前,我在空的私有存储库的URL中添加了另一个名为“ origin”的远程服务器。一切似乎都很好,所以我使用Visual Studio打开了解决方案,并着手进行更改,这些更改已正确提交给本地存储库。不幸的是,当我使用Team Explorer同步到GitHub上的私人仓库时遇到了问题-即推送外发提交。由于Team Explorer尝试推送到公共仓库(上游)而不是我自己的私人仓库(起源),因此失败了。

问题:当您有两个遥控器时,如何指定Team Explorer用于传出提交的遥控器?

我通过更改Team Explorer中的存储库设置找到了解决方法。我编辑了上游远程服务器,并将推入URL设置为我在GitHub上的私有存储库,以代替公共存储库的URL。

其他:这是我的分支在团队资源管理器中的外观-请参见下面的答案

Team Explorer - Branches

解决方法

如果当前分支正在跟踪来自特定远程服务器(例如上游)的远程跟踪分支,则推送将默认为推送到该远程服务器。如果当前分支没有跟踪任何分支,并且只有一个远程,则Team Explorer将推送到该远程。如果有多个遥控器,Team Explorer将默认为“原始”遥控器(如果找到)。

,

SO 5181845提供的用于提供两个远程控制器的解决方案还不完善,因此您可以在自己的私有仓库中修改项目,同时仍然能够从公共仓库中提取更新。它缺少SO 4878249提供的git命令,该命令会更改您的本地分支,因此它会跟踪您的私有存储库,而不是乍得B所指出的公共存储库-请参见注释。

git branch master --set-upstream-to origin/master

因此,完整的配方是:

  1. 在GitHub上创建新的存储库并获取其URL https://github.com/myname/myproject.git
  2. 在计算机上创建一个工作目录,例如src
  3. 将基础项目克隆到该目录中,例如https://github.com/sharedwork/baseproject.git
  4. 设置您的master分支,以便它跟踪myproject而不是baseproject
mkdir src
cd src 
git clone https://github.com/sharedwork/baseproject.git
cd baseproject
git rename origin upstream
git remote add origin https://github.com/myname/myproject.git
git push origin master
git branch master --set-upstream-to origin/master

您现在可以在Visual Studio中打开解决方案,并使用Team Explorer以常规方式将所做的更改推送到https://github.com/myname/myproject.git。外发的提交将进入myproject而不是baseproject。

https://github.com/sharedwork/baseproject.git更新后,您可以使用以下git命令将更改拉入项目。

cd src\baseproject
git pull upstream master

但是,您可能必须将更改合并到由baseproject更新的所有文件中。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...