通用开发技能系列:Git

云原生学习路线导航页(持续更新中)

本文是 通用开发技能系列 文章,主要对编程通用技能Git进行学习

1.为什么使用版本控制系统

  • 版本控制系统可以解决的问题
    • 代码备份很重要
    • 版本控制很重要
    • 协同工作很重要
    • 责任追溯很重要
  • 常见的版本控制系统
    • Git
    • SVN

2.Git与SVN对比

2.1.SVN

2.1.1.SVN工作原理

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

2.1.2.SVN弊端

在这里插入图片描述
如果服务器网络不好,有可能开发人员无法下载到最新的版本

2.2.Git

2.2.1.Git的产生

在这里插入图片描述

2.2.2.实现原理

  • 服务器上有一个远程仓库,各个开发人员的本地仓库也有各自的本地仓库。
  • 它们都存储着代码的各个版本

在这里插入图片描述

2.2.3.Git优点

在这里插入图片描述
如果服务器网络不好,开发人员还可以通过本地仓库获得代码版本

3.Git的下载与安装

  • Git官网下载地址:http://git-scm.com/downloads
  • 根据自己系统,下载安装即可

4.Git的本地仓库基本工作流程

  • 在本地仓库中存在3个区
    • 工作目录(Working Tree)
    • 暂存区(Index)
    • 本地历史仓库(Repository)
  • 我们平时写代码时,会把代码写在工作目录,完成一个模块工作后,提交代码进行保存。
  • 注意:
    • 提交代码必须先把代码放到暂存区,然后才可以提交本地历史仓库。不可以直接交到本地历史仓库。
    • 我们可以通过checkout切换分支,将各个分支的代码拉取到工作目录进行使用。

在这里插入图片描述

5.Git的使用

5.1.常用Git命令

  • https://blog.csdn.net/qq_44663816/article/details/131138039
  • https://blog.csdn.net/wuhuagu_wuhuaguo/article/details/79054792

5.2.分支管理

5.2.1.分支是什么

  • 分支就是由每次提交的代码,串成的一条时间线。
    在这里插入图片描述
  • 对分支的理解
    • 你学着学着,发现有一个功能需要尽快实现,但你又不想让该功能的开发影响了手里已经写好的代码。
    • 那么就可以开一个新的分支,让那个分支去开发新功能。
    • 等新功能开发好了,与手里的主线进行合并,就可以兼顾。
  • 分支的好处
    • 各个分支,并行工作,互不打扰
    • 多条分支可以合并。
  • 分支的应用场景
    在这里插入图片描述

5.2.2.分支的工作流程

  • 总结起来,分支的工作就4种操作:
    • 创建新分支
    • 切换分支
    • 合并分支
    • 删除分支
  • 版本管理中存在两种指针:master指针、head指针
    • 理解git中的head和master

5.2.3.分支的操作命令

  • 创建新的分支
    • git branch 新的分支名:该指令会创建一个新的分支指针
  • 切换分支
    • git checkout 分支名
  • 合并分支
    • git merge 分支名2:在分支1下输入这条命令,就代表将分支2合并到分支1上去。
    • 理论上是可以将主分支合并到旁分支上去的,但是不推荐。
  • 删除分支
    • git branch –d 分支名
  • 查看分支
    • git branch

6.Git的远程仓库的工作流程

6.1.远程仓库是什么

  • 远程仓库就是一个代码的托管平台,直白点说就是部署在公网上的一个网站

6.2.远程仓库和本地仓库之间的工作流程

在这里插入图片描述

  • 刚开始远程仓库、本地仓库里什么都没有。
  • 程序员a写了一份代码,通过add、commit命令提交到本地历史仓库后,使用push命令将该代码版本推送到远程仓库中。
  • 此时,程序员b需要开发,此时她的电脑上什么都没有,所以需要将远程仓库中所有的代码版本都复制一份。
    • 因此她使用了clone命令,该命令 会将远程仓库中所有的代码版本都复制一份到本地历史仓库。
  • 当程序员b修复了一个bug后,通过add、commit命令提交到本地历史仓库后,使用push命令将该代码版本推送到远程仓库中。
  • 此时程序员a想要获取最新的代码版本,由于他电脑上已经有了一部分,所以无需clone,只需使用pull命令更新本地仓库与远程仓库不同的部分即可。

6.3.常见代码托管平台

  • GitHub
    在这里插入图片描述

  • Gitee
    在这里插入图片描述

7.演示Gitee的使用

7.1.本地仓库已有-远程仓库为空

7.1.1.创建远程仓库

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

7.1.2.配置SSH公钥

  • 创建好远程仓库,还不能直接将本地仓库的项目push到远程仓库,在此之前需要配置SSH公钥
  • 配置步骤
    在这里插入图片描述
  • 设置Git账户
    在这里插入图片描述
  • 生成SSH公钥
    • 在生成SSH公钥之前,可以使用这个命令查看以前是否生成过SSH公钥
      cd ~/.ssh
      
    • 生成SSH公钥
      # 询问命令放在哪,敲3次回车即可
      ssh-keygen –t rsa –C “邮箱”
      
    • 查看生成的SSH公钥
      cat ~/.ssh/id_rsa.pub
      
  • 设置SSH公钥到远程仓库

    在这里插入图片描述在这里插入图片描述
  • 公钥测试
    ssh -T git@gitee.com
    
    • 出现绿色successfully,表示配置成功
      在这里插入图片描述

7.1.3.推送本地项目到远程仓库

  • 远程仓库地址一般很长,老写不方便,先给远程仓库地址,设置一个别名 origin
    git remote add origin git@gitee.../hello-world.git
    
  • 推送本地项目到远程仓库中
    git add .
    git commit -m "init repo"
    git push -u 仓库名称 分支名
    

7.1.4.远程仓库已有-本地仓库为空

  • 克隆仓库
    git clone 仓库地址
    
  • 拉取代码
    git pull 仓库地址 分支名
    

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

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

相关文章

网站建设 之 发布ios

首先将forceDev改为false 然后执行npm run build:ios 然后用xocode安装到手机上进行测试 ##Version(应用程序发布版本号) 对应的就是CFBundleShortVersionString。该版本的版本号是三个时期分隔的整数组成的字符串: 第一个整数代表重大修…

升级一下电脑,CPU换I5-14600K,主板换华硕B760M

刚给自己电脑升级了一下,CPU从 AMD R5 5600X 换成 Intel I5-14600K,主板换成了华硕的 TUF GAMING B760M-PLUS WIFI D4。 因为我现有的两根内存是DDR4的,所有我选了个支持DDR4内存的主板。 我发现用AMD处理器时将系统从Win10升级到Win11后变…

十四款大型语言模型在《街头霸王III》中一决雌雄

上周在旧金山举办的Mistral AI黑客马拉松上,开发出了一款基于经典街机游戏《街头霸王III》的人工智能(AI)基准测试。这款名为“AI Street Fighter III”的开源基准测试由Stan Girard和Quivr Brain开发,游戏在模拟器中运行&#xf…

PostgreSQL 文章下架 与 热更新和填充可以提升数据库性能

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(…

【51单片机入门记录】A/D、D/A转换器PCF859应用

目录 一、IIC初始化代码 二、开发板电路图 三、PCF8591读/写字节操作流程及相关函数 (1)PCF8591(AD)读操作流程及代码 (2)PCF8591(AD)写操作流程及代码 四、应用示例-显示电压…

论文笔记:UNDERSTANDING PROMPT ENGINEERINGMAY NOT REQUIRE RETHINKING GENERALIZATION

ICLR 2024 reviewer评分 6888 1 intro zero-shot prompt 在视觉-语言模型中,已经取得了令人印象深刻的表现 这一成功呈现出一个看似令人惊讶的观察:这些方法相对不太受过拟合的影响 即当一个提示被手动工程化以在给定训练集上达到低错误率时&#xff0…

学习心得1

这时我第一次更学习心得!不足的在评论区指教。 首先先来分享一下,刷一维数组题目的方法。 仔细读题,不会做的题目先完成输入输出。不要干等着着急,就跳到下一题。如果使用的时oj,那就没有题解但是使用洛谷、LeetCood…

Prometheus+grafana监控nacos和spring-boot服务(增加自定义指标)(七)

前面记录了项目中常用的各种中间件的指标采集器的用法及搭建方式 , 由于所有组件写一篇幅过长,所以每个组件分一篇方便查看,前六篇链接如下 Prometheusgrafana环境搭建方法及流程两种方式(docker和源码包)(一)-CSDN博客 Prometheusgrafana…

LeetCode - 边积分最高的节点

2374. 边积分最高的节点 这是一个有向图,且每个节点都只有一条出边,指向0的边有1,2,3,4 10, 指向7的有5,6 11. 我们只需要一次遍历就可以解决,先搞一张哈希表,k存节点…

解决VScode中matplotlib图像中文显示问题

一、更改配置文件 参考这个文件路径找到自己Python环境下的matplotlibrc文件并用记事本打开。 用ctrl F寻找下面的这两行并将前面的#删除,保存并退出。 font.family: sans-serif font.serif: DejaVu Serif, Bitstream Vera Serif, Computer Modern Roman, N…

Day31|贪心算法part01:理论基础、455.分发饼干、376. 摆动序列、53. 最大子序和

理论基础 记得贪心没有规律即可!解不出来就看题解。 455. 分发饼干 先把学生和饼干都排序(Arrays.sort只能升序),然后都从后往前遍历,把最大的饼干给需求最大的孩子(贪心) class Solution {…

计算机提示msvcp120.dll怎么解决,7种详细有效修复方法分享

在Windows操作系统的庞大舞台上,每一个组件都扮演着其独特的角色。在这些不为人知的角色中,有一个名为msvcp120.dll的文件,它是Visual C运行时库的一部分,对于确保许多应用程序的正常运行至关重要。本文将深入探讨msvcp120.dll文件…

【项目实战】——商品管理的制作完整代码

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

逐步学习Go-WaitGroup【连字都懒得写了,直接Show my Code】

package waitgroup_testimport ("fmt""runtime""sync""testing""time""github.com/stretchr/testify/assert" )// 这是对Go语标准库中sync包下的WaitGroup的描述。// WaitGroup用于等待一组并发的goroutine结结束…

非关系型数据库-----------探索 Redis高可用 、持久化、性能管理

目录 一、Redis 高可用 1.1什么是高可用 1.2Redis的高可用技术 二、 Redis 持久化 2.1持久化的功能 2.2Redis 提供两种方式进行持久化 三、Redis 持久化之----------RDB 3.1触发条件 3.1.1手动触发 3.1.2自动触发 3.1.3其他自动触发机制 3.2执行流程 3.3启动时加载…

在深度学习模型中引入先验

当面对复杂问题的时候,在深度学习模型提取特征的过程中完全抛弃知识是非常不明智的策略。虽然有很多研究者在深度网络处理数据之前,利用具有某种知识的模型驱动方法对数据进行预处理,但是这种方法没有进行实质性地改造深度网络,且…

ms-前端八股文

1、暂时性死区 是指在 JavaScript 中使用 let 或 const 声明变量时,变量在其声明之前不能被访问或使用的特性。 var可以变量提升(在 JavaScript 中,变量声明提升是指在执行代码之前,变量声明会被提升到作用域的顶部。&#xff0…

scRAN-seq|加权最近邻分析(1)

概述 本文[1]介绍了Seurat 5.0.0中的加权最近邻(WNN)分析方法,这是一种用于整合和分析多模态单细胞数据的无监督框架。 简介 多模态分析作为单细胞基因组学的一个新兴领域,它通过同时测量多种数据类型来精确描绘细胞状态&#xff…

idea的后端环境配置

首先,在你刚打开idea时红色箭头所指的是你进行配置的地方,接下来我把具体步骤说一下 1,直接点击箭头所指的地方就会出现如图界面,然后点击Tomcat server,使其展开点击第一个 第二步取消勾选,第三步选择bin的上一级然后…

C++ | Leetcode C++题解之第10题正则表达式匹配

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isMatch(string s, string p) {int m s.size();int n p.size();auto matches [&](int i, int j) {if (i 0) {return false;}if (p[j - 1] .) {return true;}return s[i - 1] p[j - 1];};vector<…