文章目录
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)
-
存在缺点:
- 可能有单点故障 一旦server挂掉不行
- server的磁盘坏了版本数据也可能丢失
- 分布式的版本控制系统(DVCS) Git
- 特点:
1 不需要网络
2 每个人都有一个版本库不会出现数据丢失
3 server作用是本地版本库的远程备份和协同开发 (以Git为例 server就是GitHub 码云 Gitlab)
GIt版本控制系统的使用
环境搭建
下载Client软件 执行exe文件
安装不要选中文目录
就这一处更改 不要把GIt的指令添加到windows系统的环境变量中
GitBash支持linux指令
工作原理
- 工作区:工作目录
- 暂存区:(stage|index)存放的都是临时文件
- 版本库:工作区有一个隐藏目录.git这个不算是工作区,而是Git版本库
总结:
Git的工作原理:工作区的数据文件–>(add
)—>暂存区中---->(commit
)—>版本库中(只有数据文件提交到GIT的版本库中git才会追踪这个数据文件,进行版本控制操作)
Git的基本操作
- 创建一个版本库
init
git init
注意git的目录是git的版本库文件不要随便去修改
config
只需配置一次
这俩点必须做 唯一标识一个提交者的身份信息
$git config --global user.name "zax"
$git config --global user.email "zax1314157@163.com"
查看
$git config --list
- 添加文本到版本库
add
(工作区到暂存区)-A
添加所有commit
(暂存区到版本库)-m
指的是添加注释(切记加注释)
查看git的状态
git status
展示操作状态信息
当你的工作区内容和版本库中的内容是一致的才会
diff
比对工作区和版本库中文件差异的指令
比如说当你修改了之后你查看状态发现你现在的工作区中内容和版本库中的内容不一致你可以使用diff
比对二者差异
这个时候提示你重新 add commit
4. 删除文件
删除文件分为:
- 真删(删除工作区和版本库都删)
- 误删(通过版本库中的历史记录恢复数据)
- 只删除版本库中的数据(而不删除工作区的文件)
rm
(真删)
绿色代表暂存区中操作
再commit
checkout
(误删)
$git checkout --filename
比如我不小心把不重要的文件保存到了版本库中
rm --cache
(只删出版本库中的历史记录,而不删除工作区的文件)
- 版本回退(后悔药)
log
git log版本库历史的提交日志
这里有id 和 注释reset
$git rest --hard commmitID
reflog
- 展示历史所有的提交日志
- git log 只能展示现在版本之前的日志
- 撤销操作
场景:我想撤销我工作区到暂存区的操作 因为我不想提交到版本库中
$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
在主干分支上还可以建一些开发分支 工作副本
- 创建和合并分支
在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
- 查看当前分支
注:git branch命令会列出所有分支,当前分支前面会标一个*号
git branch
- 修改分支并提交
git add readMe.txt
git commit -m "append Hello Dev Branch"
- 切换到主干
git checkout 分支名
- 合并 dev 分支代码到主干
# 将dev分支的新功能整合到master分支
# 首先切换到被合并分支(master)
git merge 合并分支名
- 删除 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 粘上