Git版本管理--远程仓库

前言:

本文记录学习使用 Git 版本管理工具的学习笔记,通过阅读参考链接中的博文和实际操作,快速的上手使用 Git 工具。

本文参考了引用链接博文里的内容。

引用:

重学Git-Git远程仓库管理_git remote add origin-CSDN博客

Git学习笔记(四)——远程仓库_git remote add origin-CSDN博客

Git学习笔记(一)(结合VS Code)-CSDN博客

添加远程库 - 廖雪峰的官方网站

https://blog.51cto.com/u_15300875/3070190

正文

远程仓库

远程仓库就是春初项目点吗的地方,由于认证方式的不同,远程仓库的链接可以分为两种:

  • HTTPS链接:
  • SSH链接:

给远程仓库(链接)起一个名字

在Git使用过程中,如果每次提交到远程仓库都使用链接的话,命令会显得很长,且当有多有仓库在管理时,就会显很麻烦。所以Git提供了一个给远程仓库链接起一个简单名字的操作,叫做创建远程仓库,其实就是讲本地的某个名字与远程仓库关联起来。

git add original <REMOTE_URL>

例如把Github仓库URL 和本地名字 original 关联起来

dimon@dimon-VirtualBox:~/OSPractice$ git remote add origin git@github.com:iPickCan/QT_StudentManageSystem.git
dimon@dimon-VirtualBox:~/OSPractice$ 

其中的 git remote add 是标准命令,后面的  original 指的是远程仓库的名字(可以自己随意指定), <REMOTE_UTL> 指的是远程仓库的链接URL。

远程仓库名字修改

正常情况下  git push 会有两个参数,分别是远程链接名和分支名。如 git push original main  命令的意思是将修改提交到远程链接名为original 的 main 分支。

original 是给某个远程仓库的链接指定的一个别名,可以使用命令行修改远程链接的名字

###查看现有远程仓库
dimon@dimon-VirtualBox:~/OSPractice$ git remote -v
origin	git@github.com:iPickCan/QT_StudentManageSystem.git (fetch)
origin	git@github.com:iPickCan/QT_StudentManageSystem.git (push)
dimon@dimon-VirtualBox:~/OSPractice$ ###远程名从 'origin' 更改为 'destRepo'
dimon@dimon-VirtualBox:~/OSPractice$ git remote rename origin destRepo
dimon@dimon-VirtualBox:~/OSPractice$ ###查看现有远程仓库,已经显示新名称
dimon@dimon-VirtualBox:~/OSPractice$ git remote -v
destRepo	git@github.com:iPickCan/QT_StudentManageSystem.git (fetch)
destRepo	git@github.com:iPickCan/QT_StudentManageSystem.git (push)
dimon@dimon-VirtualBox:~/OSPractice$

名字所对应的链接的修改

删除远程了连接

###查看当前远程仓库
dimon@dimon-VirtualBox:~/OSPractice$ git remote -v
destRepo	git@github.com:iPickCan/QT_StudentManageSystem.git (fetch)
destRepo	git@github.com:iPickCan/QT_StudentManageSystem.git (push)
origin	git@github.com:iPickCan/QT_StudentManageSystem.git (fetch)
origin	git@github.com:iPickCan/QT_StudentManageSystem.git (push)
dimon@dimon-VirtualBox:~/OSPractice$ ###删除远程仓库名'destRepo'
dimon@dimon-VirtualBox:~/OSPractice$ git remote rm destRepo###查看当前远程仓库
dimon@dimon-VirtualBox:~/OSPractice$ 
dimon@dimon-VirtualBox:~/OSPractice$ git remote -v
origin	git@github.com:iPickCan/QT_StudentManageSystem.git (fetch)
origin	git@github.com:iPickCan/QT_StudentManageSystem.git (push)
dimon@dimon-VirtualBox:~/OSPractice$

远程仓库和本地仓库关联起来

把远程仓库和本地仓库关联起来,分为两种情况

1. 第一种,已经创建了本地仓库的情况下,把本地仓库和远程仓库关联起来。

###创建初始化本地仓库,并提交文件到本地仓库
git init
git add README.md
git commit -m 'add readme file'###远程仓库和名字'origin'关联起来
​​​​​​​git remote add origin <远程仓库>###'git push'提交本地修改到远程仓库。‘master’是说提交本地的master分支到远程仓库origin
git push -u origin master

在'git push -u origin master' 向远程仓库提交的时候,会提示错误提交失败,因为远程仓库已经有更新,需要先把远程仓库的更新合入进来后才能提交,并且Git提醒我们使用 'git pull'从远程仓库更新改动到本地仓库。

运行 'git pull' 命令,提示错误“没有共同的提交”,原因是当前的本地Git仓库分支'master'和远程仓库之间没有关联,Git提示我们使用命令 'gti pull <远程> <分支>'或 git branch --set-upstream-to=origin/<分支> master  来把本地Git仓库分支和远程仓库分支关联起来。

执行 'git branch --set-upstream-to=origin/<分支> master' 关联本地分支和远程仓库分支,命令执行成功。执行结果说明本地 Git仓库的'master'分支已经跟踪关联了远程 origin 仓库的 'master'分支。

dimon@dimon-VirtualBox:~/test$ git branch --set-upstream-to=origin/master master
分支 'master' 设置为跟踪来自 'origin' 的远程分支 'master'。
dimon@dimon-VirtualBox:~/test$

再次执行 '  git pull ' 同步远程仓库的改动到本地Git仓库,提示错误‘fatal: 拒绝合并无关的历史’。这是因为我们是分别创建了本地的Git仓库,和远程的Git仓库,而本地的仓库和远程的仓库之间没有共同祖先。默认情况下,git合并命令拒绝合并没有共同祖先的历史。

解决办法是, '  git pull origin master --allow-unrelated-histories ' 命令,,当两个项目的历史独立地开始时,这个‘--allow-unrelated-histories ’ 选项可以被用来覆盖这个安全Git拒绝合并没有共同祖先的两个分支。

命令执行后本地仓库的'master'分支和远程仓库成功关联起来。

执行'  git push origin master ' 把本地仓库的'master'分支改动推送到远程仓库,命令执行成功。

2. 第二种,只有远程仓库的情况下,从远程仓库克隆到本地仓库。

git clone <远程仓库>
git add test.txt
git commit -m 'add test file'
git pull 
git push 

使用Gitee远程仓库

由于某些你懂得原因在国内使用 Github 网站经常会出现连接不上去,或者访问Github网站非常慢的情况。我们可以使用国内的Gitee网站作为远程的代码托管仓库。

首先注册创建一个Gitee账号,设置好自己的Gitee账号信息。

注册创建好Gitee账号之后,登录自己的Gitee账号

可以新建一个自己的仓库

创建自己的源码仓库

查看创建出来的源码Gitee仓库,点击“克隆/下载” 获取到克隆这个远程Gitee仓库的链接地址,我们选择 ssh 方式。

点击“克隆/下载”,之后我们可以选择需要克隆/拷贝这个Gitee远程仓库的方法,一般有Https, SSH 等。我们使用Git SSH的方式来克隆这个远程仓库,在弹出的提示窗口里已经给出了克隆这个远程仓库需要的命令'git clone git@gitee.com:xxxx',并且在弹出窗口里也提示了你如何配置自己本地的Git账号,Git邮箱名,和如何配置Gitee SSH公钥。

按照提示,我们来配置本地 Ubuntu 客户端的Git用户名,邮箱,和Git SSH公钥。

dimon@dimon-VirtualBox:~$ git config -l
user.email=1181302388@qq.com
dimon@dimon-VirtualBox:~$ 
dimon@dimon-VirtualBox:~$ git config --global user.name 'iPickCan' 
dimon@dimon-VirtualBox:~$ 
dimon@dimon-VirtualBox:~$ git config -l
user.email=1181302388@qq.com
user.name=iPickCan
dimon@dimon-VirtualBox:~$

生成ssh rsa key 公钥,提示生成的公钥在你自己的Ubuntu home 目录下'/home/xxx/.ssh/id_rsa'

dimon@dimon-VirtualBox:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dimon/.ssh/id_rsa): 
/home/dimon/.ssh/id_rsa already exists.
Overwrite (y/n)? 
dimon@dimon-VirtualBox:~$ 

根据Gitee弹出窗口的提示,把自己的 ssh key 公钥增加到 Gitee 中。用'cat ~/.ssh/id_ras.pub'命令打出自己的ssh 公钥,把打印出来的公钥字符串文件复制到剪贴板,单间Gitee弹出窗上的'SSH'链接,在新窗口里黏贴上之前复制的ssh公钥。

把上面生成并且打印出来的ssh 公钥字符串黏贴到Gitee网站上,并可以随意给这个公钥文件取一个名字。

本地创建一个并初始化一个 Git 仓库,然后参考上面一节的命令,把本地仓库的'master'分支推送到远程仓库' git@gitee.com:iPickCan/ospractice-exp.git '

dimon@dimon-VirtualBox:~/Gitee$ git clone git@gitee.com:iPickCan/ospractice-exp.git
正克隆到 'ospractice-exp'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 9 (delta 0), reused 0 (delta 0), pack-reused 0
接收对象中: 100% (9/9), 完成.
dimon@dimon-VirtualBox:~/Gitee$ 
dimon@dimon-VirtualBox:~/Gitee$ ls
ospractice-exp
dimon@dimon-VirtualBox:~/Gitee$ cd ospractice-exp/
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ ls
1.txt  README.en.md  README.md
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ cd .. 
dimon@dimon-VirtualBox:~/Gitee$ git status
fatal: 不是一个 git 仓库(或者任何父目录):.git
dimon@dimon-VirtualBox:~/Gitee$ clear
dimon@dimon-VirtualBox:~/Gitee$ ls
ospractice-exp
dimon@dimon-VirtualBox:~/Gitee$ cd ospractice-exp/
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ ls
1.txt  README.en.md  README.md
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ git status
位于分支 master
您的分支与上游分支 'origin/master' 一致。无文件要提交,干净的工作区
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ 
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ mkdir ch10
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ mv QChatServer/ ch10/
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ ls
1.txt  ch10  README.en.md  README.md
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ clear
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ ls -l
总用量 12
-rw-rw-r-- 1 dimon dimon    0 3月  18 14:40 1.txt
drwxrwxr-x 3 dimon dimon 4096 3月  18 14:41 ch10
-rw-rw-r-- 1 dimon dimon 1039 3月  18 14:40 README.en.md
-rw-rw-r-- 1 dimon dimon 1128 3月  18 14:40 README.md
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ 
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ 
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ git  status
位于分支 master
您的分支与上游分支 'origin/master' 一致。未跟踪的文件:(使用 "git add <文件>..." 以包含要提交的内容)ch10/提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ git add ch10
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ git status
位于分支 master
您的分支与上游分支 'origin/master' 一致。要提交的变更:(使用 "git reset HEAD <文件>..." 以取消暂存)新文件:   ch10/QChatServer/.gitignore新文件:   ch10/QChatServer/QChatServer.pro新文件:   ch10/QChatServer/main.cpp新文件:   ch10/QChatServer/qchatserver.cpp新文件:   ch10/QChatServer/qchatserver.h新文件:   ch10/QChatServer/qchatserver.ui新文件:   ch10/QChatServer/qmydb.cpp新文件:   ch10/QChatServer/qmydb.h新文件:   ch10/QChatServer/qserver.cpp新文件:   ch10/QChatServer/qserver.h新文件:   ch10/QChatServer/qtcpthread.cpp新文件:   ch10/QChatServer/qtcpthread.h新文件:   ch10/QChatServer/quser.cpp新文件:   ch10/QChatServer/quser.hdimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ git commit -m 'add ch10/QChatServer source code'
[master 3c3f44e] add ch10/QChatServer source code14 files changed, 589 insertions(+)create mode 100644 ch10/QChatServer/.gitignorecreate mode 100644 ch10/QChatServer/QChatServer.procreate mode 100644 ch10/QChatServer/main.cppcreate mode 100644 ch10/QChatServer/qchatserver.cppcreate mode 100644 ch10/QChatServer/qchatserver.hcreate mode 100644 ch10/QChatServer/qchatserver.uicreate mode 100644 ch10/QChatServer/qmydb.cppcreate mode 100644 ch10/QChatServer/qmydb.hcreate mode 100644 ch10/QChatServer/qserver.cppcreate mode 100644 ch10/QChatServer/qserver.hcreate mode 100644 ch10/QChatServer/qtcpthread.cppcreate mode 100644 ch10/QChatServer/qtcpthread.hcreate mode 100644 ch10/QChatServer/quser.cppcreate mode 100644 ch10/QChatServer/quser.h
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ git pull
已经是最新的。
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ git push
对象计数中: 18, 完成.
压缩对象中: 100% (17/17), 完成.
写入对象中: 100% (18/18), 5.70 KiB | 5.70 MiB/s, 完成.
Total 18 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:iPickCan/ospractice-exp.gitffb96b2..3c3f44e  master -> master
dimon@dimon-VirtualBox:~/Gitee/ospractice-exp$ 

把本地的一个目录 'ch10/QChatServer' 添加并提交到本地仓库 '  git add xxx; git commit -m  "xxx"  ',然后 ' git push ' 推送到远程Gitee仓库。 

查看远程Gitee仓库,发现我们在本地提交的文件已经在远程仓库上可以看到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/282314.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】选择排序

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解选择排序&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一. 基本思想二. 直接选择排序 一. 基本思想 每一次从待排序的数据元素中选出最小&#xff…

【GPT概念-03】:人工智能中的注意力机制

说明 注意力机制生成分数&#xff08;通常使用输入函数&#xff09;&#xff0c;确定对每个数据部分的关注程度。这些分数用于创建输入的加权总和&#xff0c;该总和馈送到下一个网络层。这允许模型捕获数据中的上下文和关系&#xff0c;而传统的固定序列处理方法可能会遗漏这…

android adb 实时画面 和操作

1. 下载 scrcpy 建议 windows10 用户 点击链接下载 不然可能会提示缺少部分 dll https://github.com/Genymobile/scrcpy/releases/download/v2.3.1/scrcpy-win32-v2.3.1.ziphttps://github.com/Genymobile/scrcpy/releases/download/v2.3.1/scrcpy-win32-v2.3.1.zip windo…

LVGL:拓展部件——键盘 lv_keyboard

一、概述 此控件特点&#xff1a; 特殊Button矩阵&#xff1a;lv_keyboard 本质上是一个经过定制的按钮矩阵控件。每个按钮都可以独立触发事件或响应。预定义的键映射&#xff1a;lv_keyboard 自带了一套预设的按键布局和对应的字符映射表&#xff0c;开发者可以根据需要选择…

Vue2在一个页面内动态切换菜单显示对应的路由组件

项目的需求是在一个页面内动态获取导航菜单&#xff0c;导航菜单切换的时候显示对应的路由页面&#xff0c;类似于tab切换的形式&#xff0c;切换的导航菜单和页面左侧导航菜单是同一个路由组件&#xff0c;只是放到了一个页面上&#xff0c;显示的个数不同&#xff0c;所有是动…

JS加密解密之字符编码知识

在前端开发中&#xff0c;字符编码是一个至关重要的概念&#xff0c;特别是在数据传输、加密和解密等方面。JavaScript作为一种常用的脚本语言&#xff0c;在处理字符编码时也有其独特之处。本文将详细介绍JavaScript中的字符编码知识&#xff0c;包括字符编码的分类和相关案例…

kubernetes K8s的监控系统Prometheus安装使用(一)

简单介绍 Prometheus 是一款基于时序数据库的开源监控告警系统&#xff0c;非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态&#xff0c;任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做…

JsonUtility.ToJson 和UnityWebRequest 踩过的坑记录

项目场景&#xff1a; 需求&#xff1a;我在做网络接口链接&#xff0c;使用的unity自带的 UnityWebRequest &#xff0c;数据传输使用的json&#xff0c;json和自定义数据转化使用的也是unity自带的JsonUtility。使用过程中发现两个bug。 1.安全验证失败。 报错为&#xff1a…

JavaEE 初阶篇-深入了解进程与线程(常见的面试题:进程与线程的区别)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 进程概述 2.0 线程概述 2.1 多线程概述 3.0 常见的面试题&#xff1a;谈谈进程与线程的区别 4.0 Java 实现多线程的常见方法 4.1 实现多线程方法 - 继承 Thread 类…

Obsidian插件PicGo-图床创建使用[腾讯云保姆级教程]

一、下载PicGo并配置 1&#xff1a;安装插件 首先插件市场搜索picgo会出现Image auto upload&#xff0c;这个就是PicGo安装此插件并启用即可 2&#xff1a;安装PicGo软件 打开此链接&#xff1a;https://github.com/Molunerfinn/PicGo 自己选择一个方式下载&#xff0c;我…

CSS案例-5.margin产品模块练习

效果1 相关数据 整体长&#xff1a;298px&#xff0c;高&#xff1a;415px 效果2 知识点 外边距margin 块级盒子水平居中 条件&#xff1a; 必须有宽度左右外边距设为auto 三种写法&#xff1a; margin-left&#xff1a;auto&#xff1b;margin-right&#xff1a;auto&…

爬虫逆向sm3和sm4 加密 案例

注意&#xff01;&#xff01;&#xff01;&#xff01;某XX网站逆向实例仅作为学习案例&#xff0c;禁止其他个人以及团体做谋利用途&#xff01;&#xff01;&#xff01; 案例--aHR0cDovLzExMS41Ni4xNDIuMTM6MTgwODgvc3Vic2lkeU9wZW4 第一步&#xff1a;分析页面和请求方式 …

3·15日,上海飞北京,东航全球首架C919亲测初体验

引言&#xff1a;“望闻问切”亲测 感受C919机型的航班 【阿明观察 &#xff5c; 科技热点关注】 赶巧了&#xff01;2024年3月15日消费者权益日这天&#xff0c;上海飞北京&#xff0c;我选择了采用C919的东方航空公司航班。 真赶巧了&#xff01;上了飞机后我才知道&…

文件怎么做扫码预览?创建文件活码的步骤有哪些?

现在文件可以通过扫描二维码的方式来获取&#xff0c;与传统的通过聊天软件来传输相比&#xff0c;二维码方式的应用更加的方便&#xff0c;其他人只需要通过扫描一张二维码就可以在手机上浏览或者下载文件&#xff0c;通过手机就可以预览、存储。 文件二维码的制作方法也很简…

python共享单车信息系统的设计与实现flask-django-php-nodejs

课题主要分为二大模块&#xff1a;即管理员模块和用户模块&#xff0c;主要功能包括&#xff1a;用户、区域、共享单车、单车租赁、租赁归还、报修信息、检修信息等&#xff1b; 语言&#xff1a;Python 框架&#xff1a;django/flask 软件版本&#xff1a;python3.7.7 数据库…

MO尺度(大气边界层)

在大气表面层( atmospheric surface layer)中,MO参数是用来决定流动是中性或者非中性的一个重要参数。其定义是 z / L z/L z/L&#xff0c;其中 L L L为Obukhov长度&#xff0c;其含义是浮力产生的湍动能和剪切产生的湍动能之比(Hj h AIP 2023)(Monin IAS,1954)&#xff0c;具体…

实现el-table合并列

效果图如下 <el-table :data"atlasDataList" style"width: 100%" :span-method"spanMethod"><el-table-column prop"stationName" label"" width"180" /><el-table-column prop"atlasNumbe…

langchain+chatglm3+BGE+Faiss Linux环境安装依赖

前言 本篇默认读者已经看过之前windows版本&#xff0c;代码就不赘述&#xff0c;本次讲述是linux环境配置 超短代码实现&#xff01;&#xff01;基于langchainchatglm3BGEFaiss创建拥有自己知识库的大语言模型(准智能体)本人python版本3.11.0&#xff08;windows环境篇&…

栈和队列的学习

存储方式分两类&#xff1a;顺序存储和链式存储 栈&#xff1a;只允许从一端进行数据插入和删除的线性表&#xff1a;先进后出 FILO 队列&#xff1a;只允许从一端进行数据插入&#xff0c;另一端进行数据删除的线性表&#xff1a;先进先出 FIFO 栈 创建空栈&#xff0c;创建…

解决由于历史原因解析tflite失败的问题

文章目录 0. 背景1. tflite 历史遗留问题2. schema3. flatbuffers 编译器3.1 安装 FlatBuffers 编译器3.2. 编译 FlatBuffers schema 文件3.3 使用生成的 Python 文件 4 问题未解决终极解决方案 写在最前面&#xff1a;解决方法是升级tensorflow版本&#xff0c;重新生成tflite…