git - 在 Visual Studio 中使用 github - 从上游 master 更新 fork

标签 git visual-studio github visual-studio-2015

我正在为 github 使用 VS 扩展。在登录到 github 时,我 fork 了一个存储库。然后,我从我的分支创建了一个 VS 解决方案并进行了一些更改。

两天后,我从(upstream master) fork 的原始存储库被更新了。现在我想将这些更新 pull 入 VS。类似的问题有从原始存储库更新 fork 的命令行步骤的答案,但我如何从 VS GUI 执行此操作?

最佳答案

像我一样,您可能是 GitHub 的新手,所以让我们定义一些术语。您的 VS 项目是一个本地存储库,在 GitHub 术语中称为 branch(它的名称可能是“master”)。原始存储库是上游主节点。我 fork 上游的 master(将其复制到我的 GitHub 帐户)。 Visual Studio 将 GitHub 上的存储库称为远程。默认远程是 origin/master。我在 VS 中创建了一个分支,方法是单击"file"、“新建”、“存储库...”,然后在“连接” Pane 中选择 GitHub 下列出的我的 fork 副本。现在,以下是从其原始存储库更新它的步骤。

在网络浏览器中

  1. 转到您 fork 的存储库的主页,或者单击<>代码选项卡(如果您已经在那里)。
  2. 将 URL 复制到剪贴板(单击 URL 右侧的复制图标)enter image description here

在 VS15 中

1) 将上游master添加到你的项目中:

  1. 打开与您的 GitHub 本地存储库关联的解决方案。

  2. 在 Team Explorer Home 中,依次单击“设置”和“存储库设置”。

  3. 如果尚未展开,请单击 Remotes 将其展开,然后单击 Add。

  4. 输入名称(不允许有空格)。如果您的项目名称是“project”,那么“project-upstream”是一个不错的选择。图片显示了我的选择,这不是很好。 在 Fetch 字段中,粘贴您从 GitHub 复制的 url,然后单击 Save。

    addremote3

  5. 导航回 Team Explorer 主页,点击同步,然后点击“获取”。

  6. 选择您新创建的远程名称“project-upstream”。
  7. 点击获取。

2) 从原始主仓库更新您的分支(本地仓库):

  1. 转到 Branches Pane (主页,然后是 Branches)并单击 Merge。
  2. 点击“从分支 merge ”并选择您刚刚添加的上游远程存储库。
  3. 点击 merge 按钮。您应该会在分支下方看到状态:“merge 已完成并已提交”以及提交编号。

    merge1

  4. 验证您的分支是否已更新:在 Active Git Repositories 下右键单击您的本地存储库名称(通常称为 master),然后选择 View History…右侧 Pane 显示所有提交的日志标识栏。 mergeremote

3) 在 GitHub 上更新您的分支:

  1. 返回同步 Pane 。您应该会看到 Outgoing Commits(nn),其中 nn 是您的 fork 需要与原始上游主存储库同步的提交数。

  2. 点击同步(或推送,然后点击推送按钮)。现在没有传出提交。

4) 验证您在 GitHub 上的分支是否已更新: 返回您的 Web 浏览器窗口,转到上游 master 的 fork 副本。那里的最新提交编号应该与您的分支相匹配(查看历史记录中的第一行......)。

在使用来自上游 master 的更改更新您的分支后,您可能会认为这些更改太重要了。通过创建新分支,您可以轻松地保持 GitHub 帐户中的远程分支不变。在步骤 2.4 之后,在 Active Git Repositories 下,右键单击分支并选择 New Local Branch From... 而不是 View History...。然后右击新建的分支,选择Publish Branch,将其推送到GitHub。

关于git - 在 Visual Studio 中使用 github - 从上游 master 更新 fork,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36228101/

相关文章:

git - 完全还原 pull 请求

ruby-on-rails - 如何更改部署 heroku 应用程序的提取和推送操作目标

r - 运行 git pull 后如何解决错误 bad object refs/heads/main (1)

linux - SSH 进入 EC2 并且无法执行 git clone 命令

linux - 跨多台计算机管理用户配置文件

c++ - 如何判断是哪个动态加载的库导致内存泄露

c# - 是否可以在 aspx 网页本身中跟踪/观察 session 的值?

android - 在 GitHub 上创建 Android 分支的策略

git - 为什么有些 git commits 比它们的父级更旧?

css - checkin 时默认排除css文件