Git--远程操作

news2024/9/22 15:26:48

文章目录

  • 前言
  • 一、理解分布式版本控制系统
  • 二、远程仓库
    • 1.新建远程仓库
    • 2.克隆远程仓库
    • 3.向远程仓库推送
    • 4.拉取远程仓库
    • 5.配置Git
      • 忽略特殊文件
    • 给命令配置别名
  • 总结


前言


正文开始!!!

一、理解分布式版本控制系统

我们目前所说的所有内容(工作区,暂存区,版本库等等),都是在本地!也就是在你的笔记本或者计算机上.而我们的**Git其实是分布式版本控制系统!**什么意思呢?

可以简单理解为,我们每个人的电脑上都是一个完整的版本库,这样你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上.既然每个人电脑上都有一个完整的版本库,那多人如何协作呢?比方说你在自己电脑上改了文件A,你的同时也在它的电脑上改了文件A,这时,你们俩之间只需把自己各自的修改推送给对方,就可以互相看到对方的修改了.

在这里插入图片描述

分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了.

在实际开发使用分布式版本控制的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了.也可能今天你的同事病了,它的电脑压根没有开机.因此,分布式版本控制系统通常也有一台充当"中央服务器"的电脑,但这个服务器的作用仅仅是用来方便"交换"大家的修改,没有它大家也一样干活,只要交换修改不方便而已.有了这个"中央服务器"的电脑,这样就不怕本地出现什么故障了(比如运气差,硬盘坏了,上面的所有东西全部丢失,包括git的所有内容).

二、远程仓库

Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上,怎么分布呢?最早肯定只有一台机器有一个原始版本库.此后,别的机器可以"克隆"这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分.

你肯定会向,至少需要两台机器才能玩远程库是不是?但是我只有一台电脑,怎么玩?

其实一台电脑上也是可以克隆多个版本库的,只要不在同一个目录下.不过,现实生活中是不会有人这么傻在一台电脑上搞几个远程库玩,因为一台电脑上搞几个远程库完全没有意义,而且硬盘挂了会导致所有的库都挂掉,所以我也不告诉你在一台电脑上怎么克隆多个仓库.(哈哈哈,开个玩笑).

实际情况往往是这样的,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个"服务器"仓库克隆一份到自己的电脑上,并且各自八个字的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交.

完全可以自己搭建一台运行Git的服务器.不过现阶段我们只为了学Git搭服务器是小题大做.好在这个世界有个叫GitHub的神奇网站,从名字就可以看出,这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库.

GitHub是国外的网站,速度比较慢.所以在学习过程采用Gitee来托管代码.

下面我们从零开始,使用一个Gitee的远程仓库.

1.新建远程仓库

新建远程项目仓库 :
在这里插入图片描述

填写基本信息 :

在这里插入图片描述

创建成功 :

在这里插入图片描述
创建成功后,我们可以对远程仓库进⾏⼀个基本的设置:开源or私有

在这里插入图片描述
在这里插入图片描述
从创建好的远程仓库我们便能看到,之前在本地学习过的分支,也存在于远程仓库中并被管理起来了.刚创建的仓库有且只有一个默认的master分支.
在这里插入图片描述

在这里插入图片描述

2.克隆远程仓库

克隆/下载远端仓库到本地,需要使用git clone命令,后面跟上我们的远端仓库的连接,远端仓库的连接可以从仓库中找到 : 选择"克隆/下载"获取远程仓库的连接 :

在这里插入图片描述
SSH协议和HTTPS协议是Git最常使用的两种数据传输协议.SSH协议使用了公钥加密和公钥登录机制,体现了其实用性和安全性,使用此协议需要将我们的公钥放在服务器上,由Git服务器进行管理.使用HTTPS方式时,没有要求,可以直接克隆下来.

  • 使用HTTPS方式 :

在这里插入图片描述

  • 使用SSH方式 :

在这里插入图片描述
使用SSH方式克隆仓库,由于我们没有添加公钥到远端仓库中,服务器拒绝了我们的clone链接.需要我们设置一下 :

第一步 : 创建SSH key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步.如果没有,需要创建SSH key :

在这里插入图片描述
注意要输入自己的邮箱,然后一路回车,使用默认值即可.
在这里插入图片描述

顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人.
在这里插入图片描述
第二步 添加自己的公钥到远端的仓库.

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
点击确认后,需要对你进⾏认证,输⼊你的账号密码即可。⾄此,我们的准备⼯作全部做完,欢快的
clone吧。

在这里插入图片描述
done,成功!如果有多个人协作开发,GitHub/Gitee允许添加多个公钥,只要把每个人的电脑上的key都添加到GitHub/Gitee,就可以在每台电脑上往GitHub/Gitee上提交推送了.

当我们从远程仓库克隆猴,实际上Git会自动把本地的master分支和远程的master分值对应起来,并且远程仓库的默认名称是origin.在本地我们可以使用git remote命令,来查看延远程库的信息,如 :

在这里插入图片描述
或者可以使用git remote -v显示更详细的信息:

在这里插入图片描述

上面显示了可以抓取和推送的origin的地址.如果没有推送权限,就看不到push的地址.推送是什么呢?请看下面!

3.向远程仓库推送

在这里插入图片描述
本地已经clone成功远程仓库后,我们便可以向仓库中提交内容,例如新增一个file.txt文件 :
在这里插入图片描述
提交时要注意,如果我们之前设置过全局的name和e-mail,这两项配置需要和gitee上配置的用户名和邮箱一致,否则会出错.或者从来没有设置过全局的name和e-mail,那么我们第一次提交时也会报错.这就需要我们重新配置一下,同样要注意需要和gitee上配置的用户名和邮箱一致.如何配置之前已经讲过,在这里就不再赘述了.

到这里我们已经将内容提交至本地仓库中,如何将本地仓库的内容推送至远程仓库呢,需要使用git push命令,该命令用于降本的分支版本上传到远程合并,命令格式如下 :

git push <远程主机名> <本地分支名>:<远程分支名>

# 如果本地分支名和远程分支名相同,则可以省略冒号:
git push <远程主机名> <本地分支名>

此时我们要将本地的master分支推送到origin主机的master分支,则可以 :

在这里插入图片描述
推送成功!这里由于我们使用的是SSH协议,是不用每一次推送都输入密码的,方便了我们的推送操作.如果你使用的是HTTPS协议,有个麻烦的地方就是每次推送都必须输入口令.

在这里插入图片描述

代码已经被推送至远端了 :
在这里插入图片描述

4.拉取远程仓库

在Gitee上点击file.txt文件并在线修改它 :
在这里插入图片描述
修改内容:
在这里插入图片描述
此时远程仓库是要领先于本地仓库一个版本,为了使本地仓库保持最新的版本,我们需要拉取下远端代码,并合并到本地.Git提供了git pull命令,该命令用于从远程获取代码并合并本地的版本.格式如下 :

git pull <远程主机名> <远程分支名>:<本地分支名>

# 如果远程分支是与当前分支合并,则冒号后面的部分可以省略
git pull <远程主机名> <远程分支名>

使用一下 :
在这里插入图片描述
我们发现,拉取成功了!

在这里插入图片描述

5.配置Git

忽略特殊文件

在日常开发中,我们有些文件不想或者不应该提交到远端,比如保存了数据库密码的配置文件,那怎么让Git知道呢?在Git工作区的根目录下创建一个特殊的.gitignore文件,把要忽略的文件名填进去,Git就会自动忽略这些文件了.

不需要从头写.gitignore文件,gitee在创建仓库时就可以为我们生成,不过需要我们主动勾选一下 :

在这里插入图片描述
如果当时没有选择这个选项,在工作区创建一个也是可以的.无论那种方式,最终都可以得到一个完整的.gitignore文件,例如我们向忽略以.so.ini结尾的所有文件,.gitignore的内容如下 :

在这里插入图片描述
.gitignore文件中也可以指定某个确定的文件.

最后一步就是把.gitignore也提交到远端,就完成了 :

在这里插入图片描述
接下来我们就来验证一下.gitignore文件的功能,在工作区新增两个文件a.sob.ini :

在这里插入图片描述
检验.gitignore的标准就是git status命令是不是说working tree clean.我们发现Git并没有提示在工作区中有文件新增,果然.gitignore生效了!

但有些时候,你就想添加一个文件到Git,但由于这个文件被.gitignore忽略了,根本添加不了,那么可以用-f强制添加 :

git add -f [文件名]

或者你发现,可能是.gitignore写得有问题,需要找出来到底那个规则写错了,比如说a.so文件是要被添加的,可以用git check-ignore -v a.so命令检查 :
在这里插入图片描述
Git会告诉我们,.gitignore的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则.

还有些时候,当我们编写了规则排除了部分文件时,例如 :

.*

但是我们发现.*这个规则把.gitignore也排除了.虽然可以用git add -f强制添加进去,但是我们还是不要破坏.gitignore的规则,这个时候,可以添加一条例外规则 :

# 排除所有.开头的隐藏文件
.*

# 不排除.gitignore
!.gitignore

把指定文件排除在.gitignore规则外的写法就是!+文件名.所以只需把例外文件添加进去即可.

给命令配置别名

在我们使用Git期间,有些命令敲的时候着实让人太头疼了,幸运的是git支持对命令行进行简化!

举个栗子,将git status简化为git st,对应的命令为 :

git config --global alias.st status

--global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用.如果不加,那么只针对当前仓库起作用.

接下来我们看看效果 :

在这里插入图片描述
再来配置一个log --pretty=oneline -abbrev-commit,显示日志信息

在这里插入图片描述
不过,我个⼈还是不推荐⼤家现在去使⽤它,等大家对命令很熟悉了,再去简化⾃⼰的⼯作吧,尽快适应 Git。


总结

(本章完!)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

scratch角色跟随

scratch 角色跟随 本程序实现了角色跟随功能&#xff0c;第一个角色面向鼠标指针&#xff0c;其它角色面向前一个角色&#xff0c;在距离较小时暂停。 5个角色的程序依次为&#xff1a;

RegNeRF,FreeNeRF: 神经辐射场的自由频率正则化,几何正则化,外观正则化,遮挡正则化

目录 概要&#xff1a; 一 论文 RegNeRF: Regularizing Neural Radiance Fields for View Synthesis from Sparse Inputs 1.几何正则化 2.外观正则化 二 论文 FreeNeRF: Improving Few-shot Neural Rendering with Free Frequency Regularization 3 频率正则化 和自由频…

155 mini_stack

Title Description 155. 最小栈 - 力扣&#xff08;Leetcode&#xff09; resolvent 觉得比较困难的地方就是在minstack那个部分: 两个创新点: 1.使用了INTMAX防止存放有效避免指针的问题 2.使用了min_stack时间换空间 class MinStack { public:stack<int> stack1;s…

ChatGPT带我做四轴飞行器和自平衡小车

按照ChatGPT的说法&#xff0c;这款主板的的主控MCU、无线通信、电源管理、外设接口可以共用&#xff0c;需要差异化的有电机驱动、传感器的选择、控制算法和软件、电源供电。ChatGPT说的共用部分没啥争议&#xff0c;有差异化的地方需要细想下&#xff1a;电机驱动显然应该不同…

three.jsgsap滚动交互网页实现 2-创建文字并添加离开动画

添加动画 让聚光灯的角度随着下滑增大&#xff0c;展示完整的场景 const container document.querySelector("#container");gsap.to(light, {angle: 0.7,scrollTrigger: {trigger: container,start: 0,end: innerHeight,scrub: 1},});这样下滑一个屏幕高度聚光灯的角…

Redis——初窥门径

前言 在这篇文章中&#xff0c;荔枝整理了初步了解Redis的一些基础知识和常见指令。通过这篇文章我们可以弄懂Redis具体是什么以及主要的功能、基本数据类型和操作指令。这里注意如果标题后面带*则是仅需要了解就行的知识点哈。 文章目录 前言 一、Redis概述和配置 1.1 概述…

Android Compose UI实战练手----Google Bloom 主页实现(完结)

目录 1.概述2.页面展示2.1 亮色主题2.2 深色主题 3.页面拆分及实现3.1 主页的UI整体UI架构实现3.2 底部导航栏BottomBar的实现3.3 搜索栏SearchBar的实现3.4 Banner实现3.5 中间信息列表BloomInfoList的实现 4.源码地址 1.概述 主页的页面比前面的欢迎页和登录页面要复杂得多&…

Microsoft Visual Studio 2022添加.NET Framework 4.6.2框架,然后说下.NET目标包的作用。

众所周知&#xff0c;Microsoft Visual Studio 2022不再支持.NET Framework 4.6以下的框架。从而导致前期使用老框架开发的某些应用无法打开&#xff08;打开时提示安装框架&#xff0c;但又安装不成功&#xff09;的情况出现。 前于如何安装.NET Framework 4.5及更早版本框架的…

Java中的字符串类

提示&#xff1a;字符串类是编程中最常用的一种数据类型&#xff0c;比较重要❗ 文章目录 前言一、字符串类创建对象方式静态创建动态创建 二、String字符串内容不可改变三、字符串常用方法length方法charAt方法substring方法indexOf与lastIndexOfindexOf方法lastIndexOf方法 替…

计算机基础--->数据结构(9)【并查集】

文章目录 并查集的概述并查集的主要用途并查集的实现创建和初始化集合查找当前元素的集合根节点判断两个元素是否处于同一集合合并两个集合对节点的路径进行压缩 并查集的概述 并查集是一种用于解决集合合并和查询问题的数据结构&#xff0c;主要用于实现有关集合的操作&#x…

Skywalking高级使用

Skywalking高级使用 RPC调用监控Mysql调用监控Skywalking常用插件获取追踪ID过滤指定的端点告警功能Skywalking原理Open Tracing介绍 RPC调用监控 Skywalking(6.5.0)支持的RPC框架有以下几种&#xff1a; (1) Dubbo 2.5.4 -> 2.6.0 (2) Dubbox 2.8.4 (3) Apache Dubbo 2.7.…

动态规划 DP (六) 字符串编辑

1.字符串编辑 字符串编辑问题是一类常见的问题&#xff0c;通常涉及对字符串进行插入、删除、替换等操作&#xff0c;以达到某种特定的目标。 常见的字符串编辑问题包括&#xff1a; 编辑距离&#xff08;Edit Distance&#xff09;&#xff1a;给定两个字符串&#xff0c;通…

最新抖音娱乐测评小程序源码 Thinkphp后端 抖音引流小程序

最新抖音娱乐测评小程序源码 thinkphp后端 抖音引流小程序 附搭建教程 测试环境 NginxPHP7.0MySQL5.6 网站运行目录设置为 /web 数据库配置文件 \source\application\database.php 后台登录地址 http://你的域名/index.php?s/admin/passport/login

python环境

卸载旧环境 wini 打开应用卸载 删除python解释器和pycharm 删除配置文件夹JetBrains C:\Users\CJC\AppData\Roaming\JetBrains 安装 安装python解释器 安装pycharm 查看或设置该项目的解释器和安装包 快捷键 全局搜索 双击shift 当前文件中搜索 ctrl f 查看函数…

MySQL数据库对象与数据备份和还原详解

目录 一、视图 1. 什么是视图 2. 视图与数据表的区别 3. 视图的优点 4. 创建视图 二、索引 1. 什么是索引 2. 为什么要使用索引 3. 索引优缺点 4. 何时不使用索引 5. 索引何时失效 6. 索引分类 6.1 普通索引 6.2 唯一索引 6.3 主键索引 6.4 组合索引 三、数据的…

RabbitMQ系列(25)--RabbitMQ搭建镜像队列

前言&#xff1a;如果RabbitMQ集群中只有一个Broker节点&#xff0c;那么该节点的失效将导致整体服务的临时性不可用&#xff0c;并且也可能会导致消息的丢失&#xff0c;虽然可以将所有消息都设置为持久化,并且对应队列的durable属性也设置为true&#xff0c;这样可以保证消息…

mysql 常用命令综合简单运用

目录 第一大题创建数据库创建用户表及约束字段修改位置修改字段数据类型修改字段名字添加字段修改表名字删除字段修改表的存储引擎 第二大题创建表及外键和其他约束删除外键约束和查找外键名 第三大题创建数据库创建用户同时授权一些功能修改用户的密码更新权限列表查看用户的权…

pytorch线性模型 学习前要学习的基础知识

跟着刘二大人学pytorch&#xff0c;补全一下我的基础缺失 1.numpy基础 import numpy as np from PIL import Image anp.array([1,2,3]) #生成一维数组 print(a) bnp.arange(1,4)#创建等差数组&#xff0c;默认等差是1&#xff0c;数组为1&#xff0c;2&#xff0c;3&#xff0…

spring 详解三 IOC(spring实例化及后处理器)

Spring实例化基本流程 Spring在容器初始化的时候&#xff0c;读取XMl配置&#xff0c;将其封装成BeanDefinition(Bean定义)对象&#xff0c;描述所有bean的信息 BeanDefinition会注册存储到beanDefinitionMap集合中 Spring框架遍历beanDefinitionMap&#xff0c;使用反射创建Be…

pycharm如何给一串中文快捷加引号(方法二)

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 商人重利轻别离&#xff0c;前月浮梁买茶去。 大家好&#xff0c;我是皮皮。 一、前言 前几天在Python白银群【此类生物】问了一个Pycharm基础的问题&a…