Git

GIT

引言

Git(读音为/gɪt/)是一个开源的分布式版本控制系统(vcs),可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
1 历史版本保存记录
2 后悔药 还原版本
3 协同开发
4 权限控制(细粒度的权限控制)
5 工作记录

GIT的由来

  • Linus Torvalds 1991年21岁的时候再unix操作系统的基础之上开发了linux操作系统并开源 早期的代码由手动管理
  • 2002年商业公司BitMover为linux开源社区提供了版本控制系统bitKeeper,可以免费试用
  • 2005年的时候linux社区黑客破解了bitKeeper版本控制系统,导致bitKeeper被收回
  • Linus Torvalds俩周完成Git主干的开发,大概一个月之后linux源代码由Git进行管理
  • 2008年GitHub出世 是Git版本库的托管网站,是全球最大的开源社区
  • 2018年,微软75亿美金收购了GitHub(目前百度市值400亿美金)

企业中主流的版本控制系统:

  • 集中式版本控制系统:SVN(有client和server)

  • 存在缺点:

  1. 可能有单点故障 一旦server挂掉不行
  2. server的磁盘坏了版本数据也可能丢失
    在这里插入图片描述
  • 分布式的版本控制系统(DVCS) Git
    在这里插入图片描述
  • 特点:
    1 不需要网络
    2 每个人都有一个版本库不会出现数据丢失
    3 server作用是本地版本库的远程备份和协同开发 (以Git为例 server就是GitHub 码云 Gitlab)

GIt版本控制系统的使用

https://git-scm.com/
Alt在这里插入图片描述

环境搭建
下载Client软件 执行exe文件
安装不要选中文目录
就这一处更改 不要把GIt的指令添加到windows系统的环境变量中
在这里插入图片描述
在这里插入图片描述
GitBash支持linux指令

工作原理

在这里插入图片描述

  • 工作区:工作目录
  • 暂存区:(stage|index)存放的都是临时文件
  • 版本库:工作区有一个隐藏目录.git这个不算是工作区,而是Git版本库

总结:
Git的工作原理:工作区的数据文件–>(add)—>暂存区中---->(commit)—>版本库中(只有数据文件提交到GIT的版本库中git才会追踪这个数据文件,进行版本控制操作)

Git的基本操作

  1. 创建一个版本库
  • init git init
    在这里插入图片描述

注意git的目录是git的版本库文件不要随便去修改

  1. config 只需配置一次
    这俩点必须做 唯一标识一个提交者的身份信息
$git config --global user.name "zax"
$git config --global user.email "zax1314157@163.com"

查看

$git config --list
  1. 添加文本到版本库
  • add(工作区到暂存区) -A 添加所有
  • commit(暂存区到版本库)-m指的是添加注释(切记加注释)

在这里插入图片描述
查看git的状态
git status展示操作状态信息
在这里插入图片描述
当你的工作区内容和版本库中的内容是一致的才会
在这里插入图片描述
diff 比对工作区和版本库中文件差异的指令
比如说当你修改了之后你查看状态发现你现在的工作区中内容和版本库中的内容不一致你可以使用diff比对二者差异
在这里插入图片描述
这个时候提示你重新 add commit
4. 删除文件

删除文件分为:

  • 真删(删除工作区和版本库都删)
  • 误删(通过版本库中的历史记录恢复数据)
  • 只删除版本库中的数据(而不删除工作区的文件)

rm(真删)
绿色代表暂存区中操作
在这里插入图片描述
再commit
在这里插入图片描述
checkout(误删)

$git checkout --filename

比如我不小心把不重要的文件保存到了版本库中

rm --cache(只删出版本库中的历史记录,而不删除工作区的文件)

  1. 版本回退(后悔药)
  • log git log版本库历史的提交日志
    在这里插入图片描述
    这里有id 和 注释
  • reset
    在这里插入图片描述
$git rest --hard commmitID
  • reflog
  • 展示历史所有的提交日志
  • git log 只能展示现在版本之前的日志
  1. 撤销操作
    场景:我想撤销我工作区到暂存区的操作 因为我不想提交到版本库中
$git reset HEAD xxx

提交时注释和提交的内容不一致 修改提交注释 进入文本编辑模式

$git commit --amend

在这里插入图片描述

GitHub(git的远程备份 用来做协同开发)

全球最大的开源社区,是git版本库的托管网站

1、注册账号 登录
2、创建Respository
3、关联本地版本库和远程版本库

git remote add 别名 远程版本库的url 地址

4、日常推送

git push 远程版本库的别名 分支名

5、远程版本库的clone
在这里插入图片描述

$git clone https://github.com/zax1314157/150.git

这个时候你的$ git log 还在

删除一个Respository(Setttings中)
在这里插入图片描述

还有一个注意事项:当你创建仓库的时候如果勾选README就不会给你提示初始化的操作了

协同开发的原理图(举例德云社的开发段子)

团队内的协同开发:
在这里插入图片描述

添加协作者
在这里插入图片描述
团队外的协同开发
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

分支管理(特色 建议使用)

场景:当你的应用正在开发1.0(新功能)但是1.0时的程序出bug了怎么办?

master branch主干分支:存放应用的主干代码(非常稳定的代码)
dev branch在主干分支上还可以建一些开发分支 工作副本

  1. 创建和合并分支

在Git中默认使用主干(master),master是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点。
在这里插入图片描述
当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上
在这里插入图片描述

Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化!不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变。
在这里插入图片描述
假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并:
在这里插入图片描述
所以Git合并分支也很快!就改改指针,工作区内容也不变!合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支:
在这里插入图片描述
2. 创建并切换分支

git checkout -b dev
  1. 查看当前分支

注:git branch命令会列出所有分支,当前分支前面会标一个*号

git branch 
  1. 修改分支并提交
git add readMe.txt
git commit -m "append Hello Dev Branch"
  1. 切换到主干
git checkout 分支名
  1. 合并 dev 分支代码到主干
# 将dev分支的新功能整合到master分支
# 首先切换到被合并分支(master)
git merge 合并分支名
  1. 删除 dev 分支
git branch -D 分支名

idea的集成

普通的操作

  • 先起别名 clone然后打开项目
    在这里插入图片描述
  • 配置exe
    在这里插入图片描述
  • 集成后配置一下vsc的第二个
    在这里插入图片描述
  • 然后就可以右键操作了
  • 忽略操作
    在这里插入图片描述
    在这里插入图片描述
  • 第一件事 先pull
    在这里插入图片描述
  • 第二件事 修改代码 然后add commit
    在这里插入图片描述
  • commit的时候记得写注释
    在这里插入图片描述
  • push上去就行
    在这里插入图片描述

如果你要做分支

  • 首先在右下角创建分支
    在这里插入图片描述
  • 然后checkout到这个分支中
    在这里插入图片描述
  • 修改代码 然后add commit(和上面的一样操作)
  • 然后checkout到主干里 然后 再合并
    在这里插入图片描述
  • 然后push
  • 删除分支就是下面的Delete

如果要导过去的某个阶段的时候

  • 先找到你要回去的log 然后copy它的commitID

在这里插入图片描述
然后git - repository-reset head
在这里插入图片描述
选中hard 把刚那个的commitID 粘上
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值