【青训营】Git简述和配置

一、为什么要学习Git

业界绝大多数公司都基于Git进行代码管理,因此Git是一个程序员必备的技能。并且目前绝大多数的开源项目都是基于Git维护的,参与这些项目的开发都需要使用Git。

企业反馈,对于新入职的新人,一般会有以下问题:

  • 入职后按照文档进行Git配置,但是在出问题的时候缺少自己排查配置的能力
  • 研发流程中进行一些异常操作,不符合研发规范,不清楚MR/RR等概念

二、Git是什么

Git是一种开源的分布式版本控制系统,版本控制可以记录特定版本的修改情况,版本控制可以更好地关注变更,了解每个版本的改动是什么,方便对代码进行检查,也可以随时切换到不同的版本,回滚问题代码。其中主流版本控制系统如下:
【青训营】Git简述和配置_第1张图片

三、版本控制软件发展历程

最初的方式是通本地复试文件夹来完成版本控制,一般可以通过不同的文件名区分版本。其解决方案就是开发了一些本地的版本控制软件,其中最流行的是RCS,其基本原理是本地保存所有变更的补丁集,通过这些补丁可以计算出每个版本的实际文件内容。但是他的缺点就是RCS只能在本地使用,无法进行团队何所,因此使用场景十分有限,这就延伸出了集中版本控制系统

集中版本控制的代表是SVN,其基本原理是提供一个远程服务来保存服务,所有用户的提交都提交到该服务器中,其优点是学习简单,更容易操作,而且支持二进制文件,对大文件支持更友好。但是缺点在于,分支支持不好,对于大型团队项目合作困难,单点存储,一旦服务端故障容易导致历史版本丢失

接下来就发展出了分布式版本控制,代表就是Git。其中:

  1. 每个库都有完整的提交历史
  2. 每次提交记录都是完整的文件快照,而不是记录增量
  3. 通过Push等操作完成和远端代码的同步

优点:

  1. 分布式开发,每个库都是完整的提交历史,支持本地提交,强调个体
  2. 分支管理功能强大,方便团队协作
  3. 校验和机制保证完整性,一般指添加数据,很少执行删除,不容易代码丢失

缺点:

  1. 比SVN更复杂,学习成本更高
  2. 对于大文件支持不是特别好,因此现在某些游戏美工的公用素材库依然使用SVN

四、在企业中的职责

Git除了每个开发人员都会使用之外,还会有专门的代码仓库部门,他们的职责如下:
【青训营】Git简述和配置_第2张图片

五、Git的具体操作

5.1 新建Git仓库

使用git init指令将当前文件夹进行初始化,当前文件夹会变成git文件夹,在初始化的时候有一些参数是可选的
在这里插入图片描述

使用tree .git指令打开生成的.git文件可以看到他的目录结构如下
【青训营】Git简述和配置_第3张图片
config为相关配置记录
object存储的是文件细节
refs是一些分支细节
具体里面的各个文件有什么作用后续详细展开

5.2 常见Git配置指令

在说git配置之前,首先说下git的三个层级的配置
–local:低级别配置,是本项目的配置,只会在本项目的范围内生效
–global:全局配置,作用区域是本用户范围内的所有git仓库
–system:最高级的配置,作用域是整个系统的所有git仓库
每个级别的配置可能重复或冲突,如果冲突,会以低级别的配置为准,也就是低级别配置覆盖高级别配置
使用git config --global/–system/–local来指定操纵哪个级别的配置

针对Git的配置更改都会在.git/config下进行

1.基础配置

用户名配置
git config --global user.name "coder"
git config --global user.email [email protected]

instead of配置
用于替换url,比如使用http协议还是ssh协议去进行克隆
git config --global [email protected]:.insteadOf http://github.com/

别名命令
给commit命令起个别名cin,以后使用cin命令就可以完成commit
git config --global alias.cin "cmooit --amend --no-edit"

2.远程仓库配置

远程仓库配置指的是当前的本地git文件夹需要和远程的哪一个仓库进行映射,配置好远程仓库后,就可以将远程仓库中的内容拉取到本地,或者将本地git文件夹的内容上传到远程仓库中
显示所有远程仓库
git remote -v

添加远程仓库
git remote add [name] [url]

显示远程仓库
git remote show xx (xx为远程地址的别名)

删除远程仓库
git remote rm name

下面介绍两种传输协议的远程仓库链接方式
http remote
URL:https://github.com/git/git.git

免密配置如下
【青训营】Git简述和配置_第4张图片
一般不会使用http,因为不够安全,而是使用ssh

ssh remote
URL:[email protected]:git/git.git
ssh使用的是公私钥匙的机制,将生成的公钥存放在服务端,从而实现免密访问。
目前key的类型有四种,分别是dsa,rsa, ecdsa,ed25519,如果是自己玩,使用默认的rsa就行,但在企业中,前面两种有一些安全问题不推荐使用,但是默认使用的key是rsa的,记得自行配置下key类型

生成公钥:
ssh-keygen -t ed25519 -C "[email protected]"
使用该命令后他会询问你要将秘钥存放在哪,前往
【青训营】Git简述和配置_第5张图片
打开并且将内容复制一下
在这里插入图片描述
将内容粘贴到github上
【青训营】Git简述和配置_第6张图片
【青训营】Git简述和配置_第7张图片

你可能感兴趣的:(字节跳动青训营,git,github)