分布式版本控制工具Git

1.概述

分布式版本控制工具:
分布式版本控制工具Git_第1张图片
版本控制: 管理代码的版本迭代

  • 协同修改
    多人并行不悖的修改服务器端的同一个文件
  • 数据备份
    不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态
  • 版本管理
    在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空 间,提高运行效率(而 Git 采取了文 件系统快照的方式)
  • 权限控制
    对团队中参与开发的人员进行权限控制
    对团队外开发者贡献的代码进行审核——Git 独有
  • 历史记录
    查看修改人、修改时间、修改内容、日志信息
    将本地文件恢复到某一个历史状态
  • 分支管理
    允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率

Git: 分布式版本控制系统没有“中央服务器”,每个人的电脑都是一个完整的版本库。


Git工作流程图:
分布式版本控制工具Git_第2张图片

工作区: 写代码
简单的理解为在电脑里能看到的目录,比如自己创建的本地项目目录

暂存区: 临时存储
Git的版本库里存了很多东西,其中最重要的就是称为index(或者叫stage)的暂存区,还有Git自动创建的第一个分支master,以及指向master的一个指针叫HEAD

本地仓库: 历史版本
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库

远程仓库: 一个可以共享资源的服务器,如Github,Gitee

指令:

  • clone: 从远程仓库中克隆代码到本地仓库
  • checkout : 从本地仓库中检出一个仓库分支然后进行修订
  • add: 在提交前先将代码提交到暂存区
  • commit: 提交到本地仓库。本地仓库中保存修改的各个历史版本
  • fetch: 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
  • pull: 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于
    fetch+merge
  • push: 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库

2.安装&配置

1 安装

官网下载:https://git-scm.com/download
分布式版本控制工具Git_第3张图片
很慢!不建议使用

镜像下载: https://npm.taobao.org/mirrors/git-for-windows/
分布式版本控制工具Git_第4张图片
之后运行exe一直next就OK了
右键如下,表示安装成功:
分布式版本控制工具Git_第5张图片

Git GUI:Git提供的图形界面工具
Git Bash:Git提供的命令行工具

2 基本配置

配置用户基本信息:

  1. 右键打开GitBash
  2. 设置用户信息
    git config --global user.name “xxx”
    git config --global user.email "xxx"
  3. 查看配置信息
    git config --global user.name
    git config --global user.email
    git config --global --list
  4. 删除配置信息
    git config --global --unset user.name
    git config --global --unset user.email

解决GitBash乱码问题:
1.打开GitBash执行命令:

git config --global core.quotepath false

2.安装目录/etc/bash.bashrc 文件最后加入:

export LANG="zh_CN.UTF-8" 
export LC_ALL="zh_CN.UTF-8"

3 卸载

  1. 清除环境变量
  2. 电脑设置打开应用与功能,卸载Git

4 配置SSH公钥

#切换到某个目录,存公钥
cd ~/.ssh
#生成公钥
ssh-keygen

分布式版本控制工具Git_第6张图片

#查看公钥,并复制 ctrl+insert
cat id_rsa.pub

在码云中粘贴SSH公钥
分布式版本控制工具Git_第7张图片

5 获取本地仓库

要使用Git对我们的代码进行版本控制,首先需要获得本地仓库

  1. 在电脑任意目录中建立一个用作本地仓库的目录
  2. 在此目录中打开GIt Bash
  3. 执行git init初始化本目录为一个本地仓库
  4. 创建成功刷新,目录中会多一个 .git 目录

3.基础操作

1 指令

使用命令来控制以下状态之间的转换
分布式版本控制工具Git_第8张图片

指令 说明 格式
status 查看的修改的状态(暂存区、工作区) git status
add 添加工作区一个或多个文件的修改到暂存区 `git add 单个文件名
commit 提交暂存区内容到本地仓库的当前分支 git commit -m '注释内容'
log 查看提交记录 git log [分支]
分支:
--all 显示所有分支
--pretty=oneline 将提交信息显示为一行
--abbrev-commit 使得输出的commitId更简短
--graph 以图的形式显示
reset 版本切换 git reset --hard commitID
commitID 可以使用 git-loggit log 指令查看
reflog 查看已经删除的提交记录 git reflog
cat 显示版本库对象的内容、类型及大小信息· git cat file

添加文件至忽略列表:
忽略一些不必要的文件不上传

1.创建一个 .gitignore 文件
直接创建或GitBashtouch .gitignore

2.在此文件中书写需要忽略的文件

filename		#忽略此目录
filename.idea	#忽略此文件
filename/*		#忽略此目录下的所有文件
filename/*.idea	#忽略此目录下的.idea文件

3.保存退出

2 分支

指令:

指令 说明
branch 查看本地分支
git branch 分支名 创建本地分支
git checkout 分支名 切换分支
git checkout -b 分支名 创建新的分支并切换到此分支
git merge 分支名称 合并分支(提交过程)
git branch -d b1 删除分支时,需要做各种检查
git branch -D b1 不做任何检查,强制删除

注意
□ 合并分支一般是合并其他分支到master分支上
  首先切换到master分支,然后合并分支

□ 不能删除当前分支,只能删除其他分支


解决冲突:
当>=2个人修改到同一处时,会产生冲突,Git会提示:CONFLICT (content): Merge conflict in...,而此冲突需要人手动解决

  1. 处理文件中冲突的地方(多人协商)
  2. 将解决完冲突的文件加入暂存区(add)
  3. 提交到仓库(commit)

使用规范:

  • master分支
    线上分支,主分支,中小规模项目作为线上运行的应用对应的分支
  • develop分支
    从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线
  • feature/xxxx分支
    从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并到develop分支
  • hotfix/xxxx分支分支
    从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、develop分支
  • test分支
    用于代码测试
  • pre分支
    预上线分支

分布式版本控制工具Git_第9张图片

4.Git基本原理

1 算法

Git 底层采用的是 SHA-1 算法,哈希算法可以被用来验证文件。
请添加图片描
述
算法原理如下图:
分布式版本控制工具Git_第10张图片
Git 就是靠这种机制保证数据的完整性

2 版本

Git 把数据看作是小型文件系统的一组快照。
每次提交更新时 Git 都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改, Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以 Git 的 工作方式可以称之为快照流。

分布式版本控制工具Git_第11张图片

3 分支

分布式版本控制工具Git_第12张图片

5.远程仓库

团队内部协作:
分布式版本控制工具Git_第13张图片

跨团队协作:
分布式版本控制工具Git_第14张图片

代码托管中心: 维护远程库

  • 局域网——GitLab服务器
  • 外网——GitHub、Gitee

GItHub: https://github.com/
面向开源及私有软件项目的托管平台,只支持 Git 作为唯一的版本库格式进行托管

Gitee: https://gitee.com/
国内的一个代码托管平台,由于服务器在国内,所以相比于 GitHub,码云速度会更快

GitLab: https://about.gitlab.com/
用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务,一般用于在企业、学校等内部网络搭建git私服

GitHub使用教程

你可能感兴趣的:(GIt,git)