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等。完成上述操作后,如果我们在本地执行了一些更新,并且已经add和commit过了,那么我们就可以向远程仓库进行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
Git链接上游仓库的更多相关文章
- git链接github仓库
配置Git 我们先在电脑硬盘里找一块地方存放本地仓库,比如我们把本地仓库建立在C:\MyRepository\1ke_test文件夹下 进入1ke_test文件夹 鼠标右键操作如下步骤: 1)在本地仓 ...
- Git remote 远程仓库链接管理
SVN 使用单个集中仓库作为开发人员的通信枢纽,通过在开发人员的工作副本和中央仓库之间传递变更集来进行协作. 这与 Git 的分布式协作模型不同,后者为每个开发人员提供了自己的仓库副本,并具有自己的本 ...
- git的介绍、git的功能特性、git工作流程、git 过滤文件、git多分支管理、远程仓库、把路飞项目传到远程仓库(非空的)、ssh链接远程仓库,协同开发
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. [1] 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码 ...
- Git同步原始仓库到Fork仓库中
前言 本文介绍的是Git同步原始仓库到Fork仓库示例教程,废话不多说,下面直接到实操部分. 这里以aspnetcore-doc-cn的github仓库为例,同步dev分支. 步骤 1.初始化本地仓库 ...
- 如何清洗 Git Repo 代码仓库
git prune 如何清洗 Git Repo 代码仓库 在腾讯云上创建您的SQL Cluster>>> » 相信不少团队的代码仓库 Git Repo 变得越来越大. ...
- 个人git链接和git学习心得总结
个人git链接和git学习心得总结 个人git链接: https://github.com/hanzhaoyan Git 是 Linux 的创始人 Linus Torvalds 开发的开源和免费的版本 ...
- [转]git修改远程仓库地址
原文链接:http://www.cnblogs.com/lazb/articles/5597878.html 问:Coding远程仓库地址变了,本地git仓库地址如何更新为最新地址 git修改远程仓库 ...
- git从远程仓库拉取内容或向远程仓库上传内容
一.将本地文件上传到远程仓库步骤 git init git add . git commit -m "初始框架" git remote add origin https://git ...
- 【Git】Git初始化一个仓库
文章目录 初始化仓库 检查当前文件状态 跟踪新文件 提交更新 跳过使用暂存区域 移除文件 添加远程仓库 推送到远程仓库 简单记录-慕课网 从0开始 独立完成企业级Java电商网站开发 Git初始化一个 ...
- Git管理远程仓库
一:使用远程仓库的目的 作用:备份,实现代码共享集中化管理: 二:将git本地仓库同步到远程仓库流程图 三:Git克隆操作 目的: 将远程仓库(github远程仓库项目代码)克隆到本地 如何克隆 1. ...
随机推荐
- NPM镜像代理设置
用户目录C:\Users\xxx下建立.npmrc文件,内容如下: registry="https://registry.npm.taobao.org" ELECTRON_MIRR ...
- PLC入门笔记3
熟悉开发环境 工具下载 官网失效 软件安装 官网失效 第一次PLC之旅 走廊灯两地控制案例 PLC型号确定 梯形图(LAD)和指令表(STL)两种编程方式 程序编辑 符号 变量类型 数据类型 注释 编 ...
- 执行helm list 提示kube/config 告警问题
1.现象 WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /root/.ku ...
- Vuex----Actions
Actions用于处理异步任务. 如果通过异步操作变更数据,必须通过 Action,而不能使用Mutation,但是在 Action中还是要通过触发Mutation的方式间接变更数据. 注意: 在Ac ...
- 【转载】python:获取当前目录、上层目录路径
import os print("===获取当前文件目录===")# 当前脚本工作的目录路径print(os.getcwd())# os.path.abspath()获得绝对路径p ...
- SDN实验1
(一)基本要求 使用Mininet可视化工具,生成下图所示的拓扑,并保存拓扑文件名为学号.py. 使用Mininet的命令行生成如下拓扑: a) 3台交换机,每个交换机连接1台主机,3台交换机连接成一 ...
- html:表格
HTML:表格1.表格三标签:(1)<table> 表格(2)<tr> 行(3)<td> 单元格 2.表格的基本语法和结构<table> <t ...
- Matlab %陆
第六章 MATLAB IN ENGINEERING Polynomial Differentiation多项式微分 %幂级数 f(x) = x^3-2x-5; p = [1 0 -2 -5] %自 ...
- java 循环删除数据写法
import java.util.ArrayList;import java.util.ConcurrentModificationException;import java.util.List;// ...
- (粗糙版)DeptDao,Service
DeptDao package com.javasm.dao; import com.javasm.bean.Dept; import com.javasm.util.JDBCUtils; impor ...