• Git链接上游仓库


    技术背景

    在Git的操作过程中,一般的组织内部工作模式可以在同一个仓库上的master-develop-feature不同分支上进行开发,也有一些人和外部协作者会通过Fork到自己本地的仓库进行更新的方案。但是对于Fork仓库的更新有一个问题是,如果长期在自己本地更新,有可能会逐渐脱离原始的分支,甚至会产生众多的冲突。那么为了避免在开发过程中遇到众多的冲突,建议大家在开发的过程中定期从远程的原始仓库同步过来。本文要探讨的是,如何跟远程的上游仓库进行同步。

    方法一:强制拉取

    第一种方法非常的简单粗暴,其实不建议使用,但是如果确实嫌麻烦的人,可以点击下图中的圈圈按钮,直接从原始仓库强制拉取。

    之所以不推荐这种方法,是因为在远程拉取的过程中有可能出现冲突,但是因为采取了强制性拉取的策略,所以实际上本地开发的一些内容有可能会在拉取的过程中被覆盖。

    方法二:创建远程同步

    以下详细介绍下远程仓库同步的方法。首先我们从远程clone一个我们自己Fork的仓库到本地来:

    $ git clone https://gitee.com/dechin/mindsponge.git
    正克隆到 'mindsponge'...
    Username for 'https://gitee.com': dechin
    Password for 'https://dechin@gitee.com':
    remote: Enumerating objects: 7869, done.
    remote: Counting objects: 100% (7869/7869), done.
    remote: Compressing objects: 100% (2198/2198), done.
    remote: Total 7869 (delta 5653), reused 7869 (delta 5653), pack-reused 0
    接收对象中: 100% (7869/7869), 34.72 MiB | 1.15 MiB/s, 完成.
    处理 delta 中: 100% (5653/5653), 完成.

    进入本地目录,查看远程链接:

    $ cd mindsponge/
    $ git remote -v
    origin https://gitee.com/dechin/mindsponge.git (fetch)
    origin https://gitee.com/dechin/mindsponge.git (push)

    可以看到,此时只跟自己Fork的两个仓库有链接,也就是只能pull或者push到origin的这个仓库上面。然后可以使用git remote add的方法添加原始仓库的链接:

    $ git remote add -t develop remote https://gitee.com/helloyesterday/mindsponge.git

    上一步的操作中我们甚至可以使用-t来配置与远程仓库构建链接的指定分支。此时我们再次查看远程链接:

    $ git remote -v
    origin https://gitee.com/dechin/mindsponge.git (fetch)
    origin https://gitee.com/dechin/mindsponge.git (push)
    remote https://gitee.com/helloyesterday/mindsponge.git (fetch)
    remote https://gitee.com/helloyesterday/mindsponge.git (push)

    我们发现多了两个名为remote的链接,这个就是我们Fork来的原始仓库。当然,要构建这种远程的链接,需要拥有远程仓库的相关操作权限,如push和fetch等。完成上述操作后,如果我们在本地执行了一些更新,并且已经addcommit过了,那么我们就可以向远程仓库进行push:

    $ git push origin develop
    $ git push remote develop

    只要有权限,就两边都可以pull和push。这样一来,我们在本地开发了一定的时间之后,也可以从remote上pull下来最新的代码,在本地解决好相关的冲突之后,push到自己Fork的分支。最后在完成特性的开发之后,再提交一个Pull Request到远程remote的分支上,这样是一个比较合理的Git操作。

    总结概要

    通常来说,一个Git仓库由内部组织者和外部协作者共同维护。对于内部开发者而言,他们可以通过master-develop-feature模型进行代码开发,在仓库中创建相应的特性分支和开发分支,最后再合入到主分支供大家使用。而对于外部开发者而言,最好的方式是Fork一个仓库到自己本地,然后使用本文介绍的方法二去定期跟远程remote仓库进行同步,避免在长时间的开发周期中遇到一些冲突。

    版权声明

    本文首发链接为:https://www.cnblogs.com/dechinphy/p/git-remote.html

    作者ID:DechinPhy

    更多原著文章请参考:https://www.cnblogs.com/dechinphy/

    打赏专用链接:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

    腾讯云专栏同步:https://cloud.tencent.com/developer/column/91958

    CSDN同步链接:https://blog.csdn.net/baidu_37157624?spm=1008.2028.3001.5343

    51CTO同步链接:https://blog.51cto.com/u_15561675

  • 相关阅读:
    【YOLO系列】YOLO.v3算法原理详解
    Exception in thread “Thread-2“ java.util.ConcurrentModificationException异常的解决方案
    金仓数据库 KingbaseES 插件DBMS_OUTPUT
    MonkeyRunner测试步骤
    C 语言简单入门
    【Windows】网线直连实现两台电脑共享文件夹
    Linux 文件操作(三) —— 获取并打印某个文件的属性(文件类型、执行权限、文件大小)
    QT--气泡框的实现
    JAVA计算机毕业设计在线直播平台Mybatis+源码+数据库+lw文档+系统+调试部署
    [Linux 基础] Linux编辑器Vim,你值得拥有
  • 原文地址:https://www.cnblogs.com/dechinphy/p/git-remote.html