1.概述
分布式版本控制工具: 版本控制: 管理代码的版本迭代
- 协同修改
多人并行不悖的修改服务器端的同一个文件 - 数据备份
不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态 - 版本管理
在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空 间,提高运行效率(而 Git 采取了文 件系统快照的方式) - 权限控制
对团队中参与开发的人员进行权限控制 对团队外开发者贡献的代码进行审核——Git 独有 - 历史记录
查看修改人、修改时间、修改内容、日志信息 将本地文件恢复到某一个历史状态 - 分支管理
允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率
Git: 分布式版本控制系统没有“中央服务器”,每个人的电脑都是一个完整的版本库。
Git工作流程图:
□ 工作区: 写代码 简单的理解为在电脑里能看到的目录,比如自己创建的本地项目目录
□ 暂存区: 临时存储 Git的版本库里存了很多东西,其中最重要的就是称为index(或者叫stage)的暂存区,还有Git自动创建的第一个分支master,以及指向master的一个指针叫HEAD
□ 本地仓库: 历史版本 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库
□ 远程仓库: 一个可以共享资源的服务器,如Github,Gitee
指令:
clone : 从远程仓库中克隆代码到本地仓库checkout : 从本地仓库中检出一个仓库分支然后进行修订add : 在提交前先将代码提交到暂存区commit : 提交到本地仓库。本地仓库中保存修改的各个历史版本fetch : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。pull : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于 fetch+mergepush : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
2.安装&配置
2.1 安装
官网下载:https://git-scm.com/download 很慢!不建议使用
镜像下载: https://npm.taobao.org/mirrors/git-for-windows/ 之后运行exe一直next就OK了 右键如下,表示安装成功:
Git GUI:Git提供的图形界面工具 Git Bash:Git提供的命令行工具
2.2 基本配置
配置用户基本信息:
- 右键打开GitBash
- 设置用户信息
git config --global user.name “xxx” git config --global user.email "xxx" - 查看配置信息
git config --global user.name git config --global user.email git config --global --list
解决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"
2.3 卸载
- 清除环境变量
- 电脑设置打开应用与功能,卸载Git
2.4 获取本地仓库
要使用Git对我们的代码进行版本控制,首先需要获得本地仓库
- 在电脑任意目录中建立一个用作本地仓库的目录
- 在此目录中打开GIt Bash
- 执行
git init 初始化本目录为一个本地仓库 - 创建成功刷新,目录中会多一个 .git 目录
3.基础操作
3.1 指令
使用命令来控制以下状态之间的转换
指令 | 说明 | 格式 |
---|
status | 查看的修改的状态(暂存区、工作区) | git status | add | 添加工作区一个或多个文件的修改到暂存区 | git add 单个文件名|通配符
git add. | commit | 提交暂存区内容到本地仓库的当前分支 | git commit -m '注释内容' | log | 查看提交记录 | git log [分支] 分支:
--all 显示所有分支
--pretty=oneline 将提交信息显示为一行
--abbrev-commit 使得输出的commitId更简短
--graph 以图的形式显示 | reset | 版本切换 | git reset --hard commitID commitID 可以使用 git-log 或 git log 指令查看 | reflog | 查看已经删除的提交记录 | git reflog | cat | 显示版本库对象的内容、类型及大小信息· | git cat file |
添加文件至忽略列表: 忽略一些不必要的文件不上传
1.创建一个 .gitignore 文件 直接创建或GitBashtouch .gitignore
2.在此文件中书写需要忽略的文件
filename #忽略此目录
filename.idea #忽略此文件
filename/* #忽略此目录下的所有文件
filename/*.idea #忽略此目录下的.idea文件
3.保存退出
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... ,而此冲突需要人手动解决
- 处理文件中冲突的地方(多人协商)
- 将解决完冲突的文件加入暂存区(add)
- 提交到仓库(commit)
使用规范:
- mater分支
线上分支,主分支,中小规模项目作为线上运行的应用对应的分支 - develop分支
从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线 - feature/xxxx分支
从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并到develop分支 - hotfix/xxxx分支分支
从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、develop分支 - test分支
用于代码测试 - pre分支
预上线分支 - …
4.Git基本原理
4.1 算法
Git 底层采用的是 SHA-1 算法,哈希算法可以被用来验证文件。 算法原理如下图: Git 就是靠这种机制保证数据的完整性
4.2 版本
Git 把数据看作是小型文件系统的一组快照。 每次提交更新时 Git 都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改, Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以 Git 的 工作方式可以称之为快照流。
4.3 分支
5.远程仓库
团队内部协作:
跨团队协作:
代码托管中心: 维护远程库
- 局域网——GitLab服务器
- 外网——GitHub、Gitee
GItHub: https://github.com/ 面向开源及私有软件项目的托管平台,只支持 Git 作为唯一的版本库格式进行托管
Gitee: https://gitee.com/ 国内的一个代码托管平台,由于服务器在国内,所以相比于 GitHub,码云速度会更快
GitLab: https://about.gitlab.com/ 用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务,一般用于在企业、学校等内部网络搭建git私服
GitHub使用教程
|