Git的基本使用与研发流程 | 青训营笔记
为什么要学习Git
- 协同工作:业界绝大多数的公司都是基于Git进行代码管理,因此 Git 是一个程序员的必备技能。
- 开源社区:目前绝大多数的开源项目都是基于 Git 维护的,参与这些项目的开发都需要使用Git
Git是什么
Git 是一个分布式版本控制系统。
版本控制:
- 本地版本控制
通过本地复制文件夹的方式来进行版本控制,一般可以通过不同的文件名来区分版本。
因此有了一些本地的版本控制软件,最流行的就是 RCS。它的基本原理是:本地板寸所有变更的补丁集,可以理解成就是所有的 Diff ,通过这些补丁,我们可以计算出每个版本的实际的文件内容。
缺点:只能在本地使用,无法进行团队协作,因此使用场景非常受限。从而出现了集中式的版本控制软件。
- 集中式版本控制
代表工具:SVN
基本原理:
- 提供一个远端的服务保存文件,所有用户都提交到该服务器中。
- 使用增量的方式保存文件的 Diff ,如果提交时发生冲突(一个文件,多个修改后的版本),则需要本地解决,之后再提交。
优点:
- 学习简单,易操作,支持二进制文件,对大文件比较友好
缺点:
- 本地不存储版本管理的概念,所有的提交都是连接服务器然后提交。
- 对于分支上的支持不够好,对于大型的项目团队合作比较困难。
- 分布式版本控制
代表工具:Git
基本原理:
- 每个库都有完整的提交历史,可以直接在本地进行代码提交。
- 每次提交记录的都是完整的文件快照,而不是增量 Diff 。
- 通过 Push 等操作来完成和远端代码同步。
优点:
- 分布式开发,每个库都是完整的提交历史,支持本地提交,强调个体。
- 分支管理功能强大,方便团队合作,多人协作开发。
- 校验和机制保证完整性,一般只添加数据,很少执行删除操作,不容易导致代码丢失。
缺点:
- 相对SVN更复杂,学习成本高。
- 对于大文件不是很友好(不过有git-lfs 工具可以弥补这个功能)
Git基本使用方式
配置
- 仓库初始化:
mkdir study
cd study
git init
参数:
--initial-branch初始化的分支--bare创建一个裸仓库(纯 Git 目录,没有工作目录,一般用于创建服务器的仓库)--template可以通过模板来创建预先构建好的自定义 git 目录
上面的目录结构中:
HEAD:存放当前指向的分支config:存放配置文件objects:存储一些文件信息refs:存放一些分支信息
Git Config
不同级别的 Git 配置,一般是三种:global(全局)、 system(系统)、 local(本地)(从前往后级别越来越高)
每个级别的配置可能重复,但是低级别的配置会覆盖高级别的配置。
常见的 Git 配置
- 用户名配置
git config --global user.name "lxxx"
git config --global user.email "123456789@qq.com"
- Instead of 配置(URL替换)
git --global url."ssh://user.name".insteadOf (userName)
- Git 命令别名配置
git config --global alias.cin "commit --amend --no-edit"
Git Remote
- 查看Remote
git remote -v
2. 添加 Remote
git remote add origin1 https://codechina.csdn.net/lsh0310/codechina-workflow.git
HTTP Remote
配置免密登录的方式
SSH Remote
Git Add
git add readme.md