这是我参与「第三届青训营 -后端场」笔记创作活动的的第4篇笔记。
前言
绝大多数业界公司都是基于Git进行代码管理,通过Git进行协同工作显得尤为方便。并且大多数开源项目都是基于Git维护的,参与项目需要对Git更加熟悉。
Git介绍
版本控制
Git:一个免费的、开源的分布式版本控制系统,旨在快速高效地处理从小型到非常大型的所有项目。
版本控制:一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。为了了解每个版本的改动,方便对改动的代码进行检查,预防事故的发生;也能够随时切换到不同的版本,回滚误删误改的问题代码代码,使用版本控制较好。
本地版本控制:如RCS,本地代码的版本控制。缺点是只能在本地使用,无法进行团队协作。
集中式版本控制:如SVN,可以提供一个远端服务器来维护代码版本,本地不保存代码版本,解决 多人协作问题。优点是:学习简单,容易操作;支持二进制文件,对大文件友好。缺点是:本地不存储版本管理的概念,所有提交都只能联上服务器后才能提交;分支上的支持不够好,对于大型项目团队合作比较困难;用户本地不保存所有的代码,如果服务端故障容易导致历史版本的丢失。
分布式版本控制:如Git,每个仓库都能记录历史,解决只有一个服务器保存版本的问题。有点是:分布式开发,每个库都是完整的提交历史,支持本地提交,强调个体;分支管理功能强大,方便团队合作,多人协同开发;校验和机制保证完整性,一般只添加数据,很少执行删除操作,不容易导致代码丢失。缺点是:相对SVN更复杂,学习成本高;对大文件的支持不是特别好(git-lfs工具可以弥补这个功能)。
Git的使用
1.配置Git
用户名配置
git config --global user.name "lxuegod"
git config --global user.email lxuegod@163.com
Instead of 配置
git config --global url.git@github.com:.insteadOf https://github.com/
Git命令配置
git config --global alias.cin "commit --amend --no-edit"
2.Git Remote
查看Remote
git remote -v
添加Remote
git remote add origin_ssh git @github.com:git/git.git
git remote add origin_http https://github.com/git/git.git
SSH免密设置
SSH通过公私钥的机制,将生成的公钥存放在服务端,从而实现免密访问。给出ed25519的设置方法ssh-keygen-t ed25519-C "lxuegod@example.com"默认存在~/.ssh/id_ed25519.pub
3.Git Add
使用git status查看文件状态,通过git add命令建立跟踪
4.Git Commit
使用git commit -m "写注释"命令提交文件
最后进行提交git push origin 分支
5.Objects
Blob存储文件的内容,Tree存储文件的目录信息,Commit存储提交信息。
通过Commit寻找到Tree信息,每个Commit都会存储对应的TreeID,通过Tree存储的信息,获取到对应的目录树信息,从Tree中获得blob的ID,通过blobID获取对应的文件内容。