1.0 什么叫做git?
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理
2.0 git的功能特性
Git的功能特性:
从一般开发者的角度来看,git有以下功能:
1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
2、在自己的机器上根据不同的开发目的,创建分支,修改代码。
3、在单机上自己创建的分支上提交代码。
4、在单机上合并分支。
5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
6、生成补丁(patch),把补丁发送给主开发者。
7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:
1、查看邮件或者通过其它方式查看一般开发者的提交状态。
2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。
3、向公共服务器提交结果,然后通知所有开发人员。
3.0 主流程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WWJccvSZ-1667553308171)(https://bkimg.cdn.bcebos.com/pic/a71ea8d3fd1f4134ca7667d8251f95cad0c85ed6?x-bce-process=image/watermark,image_d2F0ZXIvYmFpa2U5Mg==,g_7,xp_5,yp_5)]
Workspace:工作区,平时存放项目代码的地方。
Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息。
Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。
Remote:远程仓库 ,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换。
4.0 目录结构
Directory:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。
WorkSpace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间。
.git:存放Git管理信息的目录,初始化仓库的时候自动创建。
Index/Stage:暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。
Local Repo:本地仓库,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)。
Stash:隐藏,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态。
5.0 git的分支
git分支
1、git有一个中心仓库,库中有一个产品A的设计图纸,这个就是master。
2、码农A和B打算改进产品A;于是他们从仓库下载原始图纸到本地,然后在本地修改
3、码农A做出初步改进后打算提交,若其它任何码农均未提交,则可以直接提交;但却发现码农B已经提交自己的版本了
4、码农A认为自己的改进其实还有地方需要完善;那么如果每次合并主版本都要检查并合并B的修改(以及之后可能有的其它修改),显然会浪费很多时间,耽误后续开发;若草草检查就合入,就容易影响主版本的稳定。
5、于是码农A产生了一个分支,叫做产品A之码农A改进版;以后自己的改进都合进这个分支
6、码农B、C、D继续改进产品A的master版
7、N个月后,码农A认为自己的改进已经尽善尽美了,于是合并自己的“产品A之码农A改进版”到当前的主版本
8、但是两者冲突太多;于是码农A利用各种diff工具检查主版本和自己的分支版本之异同,注意观察自己的代码能否直接插入主版本而不引起逻辑故障;若不引起就合入,否则可能就要前后错几行、在合适位置合入。
9、合入后,经过重新测试,码农A就可以废止自己的分支版本,新功能开发完成。
10、任何参与开发的人,只要不是一次性修改,都应该这样开一个分支,把自己的工作先合入这个分支;等开发完全完成后再合并自己的分支到主版本。
6.0 git操作
7.0 git的例子
1.进入demo文件夹
cd demo
2.初始化仓库git init
3.仓库中创建readme.txt文件,内容:test
5.添加文件到暂存区中 git add readme.txt
6.提交文件到仓库 git commit -m “readme.txt提交”
8.提交到远程库 git push
9.修改文件后可以使用diff查看文件修改前后对比 git diff readme.txt
10.
git log
来查看最近到最远的历史提交日志11.回退版本 git reset --hard 版本号
8.0 git的冲突解决
9.0 git所使用的软件
git本身,官网下载,https://git-scm.com/
TortoiseGit ,主要是提供了跟svn类似的客户端操作界面,尤其是他提供了右键菜单功能
vscode的插件,(1),git history (2),git lens,(3)git graph-- 图像显示,效果更好
vscode除了插件的方法,以外,可以直接使用vscode的功能进行git源代码管理