Git工具
版本库:典型的客户/服务器系统。版本库是版本控制的核心,任意数量客户端,客户端通过写数据库分享代码。版本控制是一种记录一 个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。简单来说,就是为目录打快照。将来可以回到某一个历史记录点。是一个典型的客户端/服务器模型(C/S模型)。版本库是版本控制的核心。
集中式版本控制系统:开发者之间共用一个仓库(repos itory)。所有操作需要联网。
分布式版本控制系统:每个开发者都是一个仓库的完整克隆,每个人都是服务器。支持断网操作
Git基本概念:是一个分布式的代码管理工具。可以是C/S架构,也就是Client/Server。只要有适当的权限,每个客户端都可以下载或上传数据到服务器。
工作区:写代码的目录。就是项目代码存放的目录。
暂存区:工作区与版本库之间的缓冲地带。位置是.git/index
版本库:工作区快照存放的目录。在工作区下,名为.git的目录
分布式版本控制系统:每个开发者都是一个仓库的完整克隆,每个人都是服务器。支持断网操作
Git基本概念:是一个分布式的代码管理工具。可以是C/S架构,也就是Client/Server。只要有适当的权限,每个客户端都可以下载或上传数据到服务器。
工作区:写代码的目录。就是项目代码存放的目录。
暂存区:工作区与版本库之间的缓冲地带。位置是.git/index
版本库:工作区快照存放的目录。在工作区下,名为.git的目录
![](https://img-blog.csdnimg.cn/direct/4f867cbcd6da412da9561b0cc81b8835.png)
安装git软件包
![](https://img-blog.csdnimg.cn/direct/c8f3c49566e44388b430b635e778643f.png)
设置使用者的名字和email地址
![](https://img-blog.csdnimg.cn/direct/df35e95d274c4b2b9c8bb0af6dd2d87e.png)
在~/.gitconfig文件查看(修改)用户
![](https://img-blog.csdnimg.cn/direct/4ff5a3f235534d0c956d4aae68de5986.png)
创建git托管的目录
![](https://img-blog.csdnimg.cn/direct/95c3be484afc4d87a14cca00241a34e8.png)
让普通目录能够被git托管
![](https://img-blog.csdnimg.cn/direct/18d170b3b62142cda297a7b8d9bd1b22.png)
查看git状态
![](https://img-blog.csdnimg.cn/direct/ad5f349c2b024079bf81a7f8562d6b48.png)
打快照:
1、将工作区的文件提交到暂存区
![](https://img-blog.csdnimg.cn/direct/34e373dc2c914cb9be0ff05daab5421e.png)
2、打快照提交到版本库中
![](https://img-blog.csdnimg.cn/direct/5e9f7182aa6e4a70b5dff45bbc4bfe42.png)
打完快照后,此时暂存区中没有文件
![](https://img-blog.csdnimg.cn/direct/12ebe1edff144a6fa7cc48ca7069102d.png)
再次创建几个快照
![](https://img-blog.csdnimg.cn/direct/a2808e263ca945f2b301d31507e35659.png)
![](https://img-blog.csdnimg.cn/direct/6938477973d94881a8ab1a5d8fc64b8f.png)
git log:查看当前以及历史快照版本
![](https://img-blog.csdnimg.cn/direct/3088ef639f3648699e13ddadee8079ab.png)
git log --pretty=oneline :简化查看历史快照版本
![](https://img-blog.csdnimg.cn/direct/4cfe35cfc0f449e6864d28cdb4930c56.png)
版本回退到第二版本
![](https://img-blog.csdnimg.cn/direct/9cdd0b3f7ebf4a7b8c816b7cd7e69f7c.png)
回退到第一版本
![](https://img-blog.csdnimg.cn/direct/5c268385206e4d30a0532fdf5d0f43c9.png)
此时该git log不能查看未来版本,版本的切换实际是head指针的指向
![](https://img-blog.csdnimg.cn/direct/aa207e43be5541d9af250e753cd6e238.png)
git reflog:记录head头指针移动的轨迹
![](https://img-blog.csdnimg.cn/direct/b6f1256b5c5e48d1b8a22b813d8cfb3c.png)
此时可以根据头指针的移动轨迹来还原到版本二、三
![](https://img-blog.csdnimg.cn/direct/27f68422604249b0a77121abc9a390bd.png)
![](https://img-blog.csdnimg.cn/direct/c1e9da49cad74c6ab28554f1faf5e3de.png)
git分支:使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。可以按功能创建分支,分支可以合并。git的默认分支名为master。它在功能上与用户创建的分支没有区别。
常见的分支:Master:主分支;主要是稳定的版本分支,正式发布的版本都从Master拉。
Develop:开发分支;更新和变动最频繁的分支,正常情况下开发都是在Develop分支上进行的。
Release:预发行分支; -般来说,代表一个版本的功能全部开发完成后递交测试,测试出Bug后进行修复的分支。
Develop:开发分支;更新和变动最频繁的分支,正常情况下开发都是在Develop分支上进行的。
Release:预发行分支; -般来说,代表一个版本的功能全部开发完成后递交测试,测试出Bug后进行修复的分支。
Features:功能分支;其实Features不是- 一个分支,而是一个分支文件夹。里面包含了每个程序员开发的功能点。Feature开发完成后合入Develop分支。
HotFix:最希望不会被创建的分支;这个分支的存在是在已经正式_上线的版本中,发现了重大Bug进行修复的分支。
1、对mytest创建一个分支
1、对mytest创建一个分支
git branch:查看当前分支
![](https://img-blog.csdnimg.cn/direct/25c9c584d7fc4786b63ace4a30e09ace.png)
git branch 分支名:创建分支;git branch -d 分支名:删除分支
![](https://img-blog.csdnimg.cn/direct/2aba406e83aa41dca3e4030efb0d334c.png)
git checkout 分支名:切换分支
![](https://img-blog.csdnimg.cn/direct/7e8348aa31b04b23be8c9da5eebe9c71.png)
b01分支创建文件并且创建快照。
![](https://img-blog.csdnimg.cn/direct/e6da398f8dac408fb6b1206ec5c43665.png)
对b01分支的操作不会影响到主分支
git checkout master:切换到主分支,没有刚刚创建的b01.txt文件
![](https://img-blog.csdnimg.cn/direct/b43f356cd71a45ccae3a3adb62d5ff86.png)
git merge 分支名:将b01分支的代码合并到主分支(在主分支下执行代码)
![](https://img-blog.csdnimg.cn/direct/45356c32c0a54cdfbd917d9c56f38c00.png)
2、创建b02分支
![](https://img-blog.csdnimg.cn/direct/97326fef20a142d4aef97c5ea3360a6b.png)
在b02分支上创建hell.txt文件并创建快照
![](https://img-blog.csdnimg.cn/direct/175e1507c7c24dc4bdb73ad32fe32969.png)
切换到主分支并创建hello.txt文件打个快照
![](https://img-blog.csdnimg.cn/direct/3e05ee084a4a40e6bd1383e32d788c10.png)
在主分钟中合并b02分支,其中都有hell.txt文件就会发生冲突
![](https://img-blog.csdnimg.cn/direct/49403e62d1de41f6817f8ddce79ec024.png)
修改hello.txt文件后,重新执行commit提交(创建快照)的操作
![](https://img-blog.csdnimg.cn/direct/0451fa8346a74805bbd516139a2516a9.png)
tag标记:可以将某一次提交打标记,以示本提交重要。通常用于将某次提交标记为一个软件发行版本。
![](https://img-blog.csdnimg.cn/direct/b4ec30817db44901af1c003afd99ec26.png)
git tag:查看仓库有那些标记
git tag:标记名:给当前版本打上标记
![](https://img-blog.csdnimg.cn/direct/100c927e5ecf425188d4c391aebd0185.png)
git show 标签名:查看该标签的详细信息
![](https://img-blog.csdnimg.cn/direct/5d7c6333032c49298e19fbc4edc3c6db.png)
练习:
1.创建名为myfile的目录,并设置为通过git管理
2.创建readme文件,说明该项目的作用。
3.将当前状态打快照。
4.在myfile中创建user . txt的文件,保存用户信息,内容为
2.创建readme文件,说明该项目的作用。
3.将当前状态打快照。
4.在myfile中创建user . txt的文件,保存用户信息,内容为
lisi:123
zhangsan:123456
5.将当前状态打快照。
6.将当前状态打标记,标记名为1.0。
7.查看快照历史。
8.切换到最初只有readme文件时的状态。
9.切换到最新有user . txt文件时的状态。
10.创建名为develop的分支,并切换至该分支。
11.在develop分支创建名为master . txt的文件。内容为
5.将当前状态打快照。
6.将当前状态打标记,标记名为1.0。
7.查看快照历史。
8.切换到最初只有readme文件时的状态。
9.切换到最新有user . txt文件时的状态。
10.创建名为develop的分支,并切换至该分支。
11.在develop分支创建名为master . txt的文件。内容为
xixi:123456
meimie:1234456
12.将当前分支状态打快照。
13.切换回master分支。
14.将develop分支合并到master。
15.将当前状态打标记,标记名为1.1。
13.切换回master分支。
14.将develop分支合并到master。
15.将当前状态打标记,标记名为1.1。
1.创建名为myfile的目录,并设置为通过git管理
![](https://img-blog.csdnimg.cn/direct/5a46fca5eaa2476083ae1f36ed1f4943.png)
2.创建readme文件,说明该项目的作用。
![](https://img-blog.csdnimg.cn/direct/2481c76a2c8e49bebd19510d19335b19.png)
3.将当前状态打快照。
![](https://img-blog.csdnimg.cn/direct/d4476e9cab974086978349d9e9ce1096.png)
4.在myfile中创建user . txt的文件
![](https://img-blog.csdnimg.cn/direct/79a945f467734ee190cc6e7ff95e9f99.png)
5.将当前状态打快照。
![](https://img-blog.csdnimg.cn/direct/5fcf40d876464d7589b880151f2ab548.png)
6.将当前状态打标记,标记名为1.0。
![](https://img-blog.csdnimg.cn/direct/c7ede75526744027abe930be0924c9ef.png)
7.查看快照历史。
![](https://img-blog.csdnimg.cn/direct/caa109cf97a54d63ad487193f68e6d78.png)
8.切换到最初只有readme文件时的状态。
![](https://img-blog.csdnimg.cn/direct/6e7b67baa12742dbb7aafedf04850046.png)
9.切换到最新有user . txt文件时的状态。
![](https://img-blog.csdnimg.cn/direct/22c77e631e83423d8c285cf3b93a301d.png)
10.创建名为develop的分支,并切换至该分支。
![](https://img-blog.csdnimg.cn/direct/e150791f48774ba0a3b38066ebc2b885.png)
11.在develop分支创建名为master . txt的文件
![](https://img-blog.csdnimg.cn/direct/ad5c24f0452e4cf39060fea7042ef535.png)
12.将当前分支状态打快照。
![](https://img-blog.csdnimg.cn/direct/cf92a3550a964fd6a55dc281124e6fed.png)
13.切换回master分支。
![](https://img-blog.csdnimg.cn/direct/714ef67662264d6c90a806bc7162918d.png)
14.将develop分支合并到master。
![](https://img-blog.csdnimg.cn/direct/fc22ee637237491386e412e3931e5a86.png)
15.将当前状态打标记,标记名为1.1。
![](https://img-blog.csdnimg.cn/direct/a385512f27c946379c1ef1164186b53c.png)
![](https://img-blog.csdnimg.cn/direct/8e70e216ed4343c0a1ce936aeb904797.png)
远程仓库
![](https://img-blog.csdnimg.cn/direct/4f16cdeb36724d0fa4562e1c12247cd3.png)
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub。
Gitee是国内的Git
Gitee是国内的Git