这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记
一.Git是什么
引用Git官方文档的一段话
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
“distributed version control system”分布式版本控制系统
1.1什么是版本控制?版本控制的作用
一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。简单来说就是记录开发人员每次的代码变更,方便对改动的代码进行检查,预防事故的发生。
分布式版本控制是版本控制的一个类型
代表性的工具就是Git
1.2基本原理
1.每个库都存有完整的提交历史,可以直接在本地进行代码提交 2.每次提交记录的都是完整的文件快照,而不是记录增量 3.通过Push等操作来完成和远端代码的同步
1.3优点
1.分布式开发, 每个库都是完整的提交历史,支持本地提交,强调个体 2.分支管理功能强大,方便团队合作,多人协同开发 3.校验和机制保证完整性,一般只添加数据,很少执行删除操作,不容易导致代码丢失
1.4缺点
1.相对SVN更复杂,学习成本更高 2.对于大文件的支持不是特别好(git-lfs 工具可以弥补这个功能)
二.Git的发展历史
2.1作者
Linus Torvalds (就是Linux这个项目的作者,同时也是Git的作者,前人栽树后人乘凉,大佬在哪里都是大佬)。
2.2开发原因
怀疑Linux团队对BitKeeper (另-种分布式版本控制系统,专有软件)进行了逆向工程,BitKeeper 不允许Linux团队 继续无偿使用。因此决定自己开发一个 分布式版本控制系统。
2.3开发时间
大概花了两周时间,就完成了Git 的代码第一个版本, 后续Linux项目就开始使用Git进行维护。
三.Git的基本使用方式
3.1常见的Git配置
用户名配置
git config --global user.name "liaoxingju" git config --global user.email liaoxingju@bytedance.com
Instead of配置
git config --global url.git@github.com.insteadOf github.com/
Git命令别名配置
git config --global alias.cin "commit --amend --no- edit"
3.2Git Remote命令
3.2.1 查看Remote
git remove -v (出现“ 没有这个命令的提示”)
添加Remote
git remote add origin_ ssh git@github.com:git/git.git git remote add origin_ http https:/ /github.com/ git/git.git
3.2.2 HTTP Remote
免密配置
内存: git config - -global credential.helper 'cache --timeout=3600'
硬盘: git config --global credential.helper "store - file /path/to/credential file"
不指定目录的情况默认是~/ .git-credentials
将密钥信息存在指定文件中 具体格式: {user}:${password}@github.com
3.2.3 SSH Remote
URL: git@github.com:git/git.git
免密配置
SSH可以通过公私钥的机制,将生成公钥存放在服务端,从而实现免密访问
目前的Key的类型四种,分别是dsa、rsa、ecdsa、 ed25519 默认使用的是rsa,由于一 些安全问题,现在已经不推荐使用dsa和rsa了,优先推荐使用ed25519