Git的基本使用与研发流程 | 青训营笔记

107 阅读3分钟

Git的基本使用与研发流程 | 青训营笔记

为什么要学习Git

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

Git是什么

Git 是一个分布式版本控制系统。

版本控制:

image-20230606162146626.png

  1. 本地版本控制

通过本地复制文件夹的方式来进行版本控制,一般可以通过不同的文件名来区分版本。

image-20230606163422456.png

因此有了一些本地的版本控制软件,最流行的就是 RCS。它的基本原理是:本地板寸所有变更的补丁集,可以理解成就是所有的 Diff ,通过这些补丁,我们可以计算出每个版本的实际的文件内容。

缺点:只能在本地使用,无法进行团队协作,因此使用场景非常受限。从而出现了集中式的版本控制软件。

  1. 集中式版本控制

image-20230606163438518.png

代表工具:SVN

基本原理

  • 提供一个远端的服务保存文件,所有用户都提交到该服务器中。
  • 使用增量的方式保存文件的 Diff ,如果提交时发生冲突(一个文件,多个修改后的版本),则需要本地解决,之后再提交。

优点

  • 学习简单,易操作,支持二进制文件,对大文件比较友好

缺点

  • 本地不存储版本管理的概念,所有的提交都是连接服务器然后提交。
  • 对于分支上的支持不够好,对于大型的项目团队合作比较困难。
  1. 分布式版本控制

代表工具:Git

image-20230606163451224.png

基本原理

  1. 每个库都有完整的提交历史,可以直接在本地进行代码提交。
  2. 每次提交记录的都是完整的文件快照,而不是增量 Diff 。
  3. 通过 Push 等操作来完成和远端代码同步。

优点

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

缺点

  • 相对SVN更复杂,学习成本高。
  • 对于大文件不是很友好(不过有git-lfs 工具可以弥补这个功能)

Git基本使用方式

配置

  1. 仓库初始化:
 mkdir study
 cd study
 git init

参数:

  • --initial-branch 初始化的分支
  • --bare 创建一个裸仓库(纯 Git 目录,没有工作目录,一般用于创建服务器的仓库)
  • --template 可以通过模板来创建预先构建好的自定义 git 目录

image-20230606171057312.png

上面的目录结构中:

  • 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

  1. 查看Remote
 git remote -v

2. 添加 Remote

 git remote add origin1 https://codechina.csdn.net/lsh0310/codechina-workflow.git

HTTP Remote

配置免密登录的方式

image-20230606173234770.png

SSH Remote

image-20230606173424884.png

Git Add

image-20230606173748159.png

git add readme.md

image-20230606173902271.png

Git commit

image-20230606174020491.png