golang语言系列:Git

news/2024/5/17 18:02:53 标签: git, 远程仓库, github, gitee, 代码管理, 版本管理, git命令

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

本文是 golang语言系列 文章,主要对编程通用技能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 分支名
  • 查看分支

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.推送本地项目到远程仓库

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

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

http://www.niftyadmin.cn/n/5465279.html

相关文章

leetcode344、541——反转字符串

1、反转字符串一 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1: 输入:s [&quo…

设计模式(14):命令模式

介绍 将一个请求封装为一个对象,从而使我们可用不同的请求对象客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。也称之为:动作Action模式,事务transaction模式。 命令模式角色 抽象命令类(Comman…

构建安全高效的用户登录系统:登录流程设计与Token验证详解

在当今数字化时代,用户登录系统是几乎所有在线服务的基础。然而,随着网络安全威胁的不断增加,设计一个安全可靠的登录系统变得至关重要。本文将深入探讨用户登录流程的设计原则以及Token验证的实现方式,带您了解如何构建安全高效的…

想要管理更轻松?这些工具必须有! 6大类61个效率工具(赶紧收藏!)

企业战略制定时,需要从哪些维度对外部环境进行分析? 如何平衡短期目标和长期战略的矛盾? 怎样有效地协调各部门之间的合作与沟通? 如何应对市场变化和竞争压力带来的挑战? 如何在资源有限的情况下做出最优决策&…

深入了解C语言中的结构体类型与内存对齐

引言: 在C语言中,结构体是一种自定义的数据类型,它允许我们将不同类型的数据组合在一起,形成一个新的数据类型。结构体的使用为我们解决了一些复杂数据的表示和处理问题,不仅限于单单的整型或者字符。本文将深入探讨结…

中国联通提供漏洞扫描服务

中国联通提供漏洞扫描服务: 构筑企业网络安全防线,实现精准风险管控 随着数字化转型的深入,企业的IT资产日益庞大且复杂,各类安全漏洞潜藏其中,成为不法分子攻击的潜在入口。中国联通深谙企业网络安全之重要性&#…

洞悉行业趋势,把握创富先机,与【星城战记】共创辉煌未来!

在快节奏的现代生活中,人们对于休闲娱乐的需求日益旺盛,据研究显示,到2034年中国电子娱乐市场规模高达4800亿人民币,电玩城行业正呈现出蓬勃发展的态势。本文将深入分析当前电玩城行业的发展趋势和市场前景,并阐述选择…

Netty学习——源码篇10 Netty内存分配ByteBuf基础 备份

1 初始ByteBuf ByteBuf是Netty整个结构中最为底层的模块,主要负责把数据从底层I/O读取到ByteBuf,然后传递给应用程序,应用程序处理完成后再把数据封装成ByteBuf写回I/O。所以,ByteBuf是直接与底层打交道的一层抽象。 2 ByteBuf的…