服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 编程技术 - 跟踪多个 Git 远程仓库

跟踪多个 Git 远程仓库

2020-12-11 23:57Linux中国Peter Portante 编程技术

拥有一致的命名标准是保持本地和上游 Git 仓库保持一致的关键。当本地 Git 仓库的命名与远程仓库不一致时,与远程仓库协作就会变得很混乱。

拥有一致的命名标准是保持本地和上游 Git 仓库保持一致的关键。

当本地 Git 仓库的命名与远程仓库不一致时,与远程仓库协作就会变得很混乱。

解决此问题的一个方法是标准化两个词的使用和含义:origin 指的是你个人的 example.com/<USER>/* 仓库,而 upstream 指的是你从 origin 仓库复刻fork出来的 example.com 仓库。换句话说,upstream 指的是公开提交工作的上游仓库,而 origin 指的是你对上游仓库的本地复刻,例如,你从这里生成拉取请求pull request(PR)。

以 pbench 仓库为例,下面是一个逐步建立新的本地克隆的方法,其中 origin 和 upstream 的定义是一致的。

1、在大多数 Git 托管服务上,当你想在上面工作时,必须对它进行复刻。当你运行自己的 Git 服务器时,这并不是必要的,但对于一个公开的代码库来说,这是一个在贡献者之间传输差异的简单方法。

创建一个 Git 仓库的复刻。在这个例子中,假设你的复刻位于 example.com/<USER>/pbench

2、接下来,你必须获得一个统一资源标识符 (URI),以便通过 SSH 进行克隆cloning。在大多数 Git 托管服务上,比如 GitLab 或 GitHub,它在一个标有 “Clone” 或 “Clone over SSH” 的按钮或面板上,可以将克隆 URI 复制到剪贴板中。

3、在你的开发系统中,使用你复制的 URI 克隆仓库:

$ git clone git@example.com:<USER>/pbench.git

这将以默认名称 origin 来克隆 Git 仓库,作为你的 pbench 仓库复刻副本。

4、切换到刚才克隆的目录:

$ cd ~/pbench

5、下一步,获取源仓库的 SSH URI(你最初复刻的那个)。这可能和上面的方法一样。找到 “Clone” 按钮或面板,复制克隆地址。在软件开发中,这通常被称为“上游”,因为(理论上)这是大多数提交发生的地方,而你打算让这些提交流向下游的仓库。

6、将 URI 添加到你的本地仓库中。是的,将有两个不同的远程仓库分配给你的本地仓库副本:

$ git remote add upstream git@example.com:bigproject/pbench.git

7、现在你有两个命名远程仓库:origin 和 upstream。 你可以用 remote 子命令查看你的远程仓库:

$ git remote -v

现在,你的本地 master 分支正在跟踪 origin 的 master,这不一定是你想要的。你可能想跟踪这个分支的 upstream 版本,因为大多数开发都在上游进行。这个想法是,你要在从上游获得的内容的基础上添加更改。

8、将你的本地的 master 分支改成跟踪 upstream/master

$ git fetch upstream

$ git branch --set-upstream-to=upstream/master master

你可以对任何你想要的分支这样做,而不仅仅是 master。例如,有些项目使用 dev 分支来处理所有不稳定的变化,而将 master 保留给已批准发布的代码。

9、一旦你设置了你的跟踪分支,一定要变基(rebase)你的 master 分支,使它与上游仓库的任何新变化保持一致:

$ git remote update

$ git checkout master

$ git rebase

这是一个保持 Git 仓库在不同复刻之间同步的好方法。如果你想自动完成这项工作,请阅读 Seth Kenlon 关于使用 Ansible 托管 Git 仓库的文章。

原文地址:https://linux.cn/article-12911-1.html

延伸 · 阅读

精彩推荐
  • 编程技术简单、好懂的Svelte实现原理

    简单、好懂的Svelte实现原理

    本文会围绕一张流程图和两个Demo讲解,正确的食用方式是用电脑打开本文,跟着流程图、Demo一边看、一边敲、一边学...

    魔术师卡颂4822021-11-10
  • 编程技术AIOps,SRE工程师手中的利器

    AIOps,SRE工程师手中的利器

    AIOps开始成为一种极为重要的站点可靠性工程工具。它能够高效吸纳观察数据、参与数据以及来自第三方工具的数据,判断系统运行状态并保证其处于最佳...

    至顶网5962021-03-08
  • 编程技术用户态 Tcpdump 如何实现抓到内核网络包的?

    用户态 Tcpdump 如何实现抓到内核网络包的?

    在网络包的发送和接收过程中,绝大部分的工作都是在内核态完成的。那么问题来了,我们常用的运行在用户态的程序 tcpdump 是那如何实现抓到内核态的包...

    开发内功修炼11612021-09-08
  • 编程技术从Context源码实现谈React性能优化

    从Context源码实现谈React性能优化

    这篇文章主要介绍Context的实现原理,源码层面掌握React组件的render时机,从而写出高性能的React组件,源码层面了解shouldComponentUpdate、React.memo、PureComponen...

    魔术师卡颂5312020-12-20
  • 编程技术真正聪明的程序员,总有办法不加班

    真正聪明的程序员,总有办法不加班

    工作效率提升了,就可以少加班了,聪明的程序员,总会有一堆可以提升编码效率的工具?当一种工具满足不了工作需求,就去探索新的,今天纬小创就给...

    今日头条12482021-03-04
  • 编程技术让开发效率倍增的 VS Code 插件

    让开发效率倍增的 VS Code 插件

    今天来分享一些提升开发效率的实用 VS Code 插件!Better Comments 扩展可以帮助我们在代码中创建更人性化的注释,有不同形式和颜色的注释供我们选择。 ...

    前端充电宝7132022-04-21
  • 编程技术2021年值得关注的React PDF 库

    2021年值得关注的React PDF 库

    今天,许多网络应用程序为其用户提供内置的PDF浏览选项。然而,选择一个并不容易,因为它们的功能远远超过显示PDF。在这篇文章中,我将评估5个React的...

    TianTianUp5222021-06-21
  • 编程技术Delphi - Indy idMessage和idSMTP实现邮件的发送

    Delphi - Indy idMessage和idSMTP实现邮件的发送

    这篇文章主要介绍了Delphi - Indy idMessage和idSMTP实现邮件的发送,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    JJ_JeremyWu6592020-09-22