git 教程

git 教程1.版本管理工具概念2. 版本管理工具介绍2.1版本管理发展简史(维基百科)2.1.1 SVN(SubVersion)2.1.2 Git3. Git 发展简史4. Git 的安装4.1 git 的下载4.2 安装5. Git 工作流程5.1 Git 初始化5.2 git 流程5.2.1 流程图5.2.2概念即详解6.Git 的基本使用01-TortoiseGit 操作本地仓库6.1 初始化仓库6.2 添加文件6.3 提交文件至本地仓库6.4 修改文件,与再次提交文件6.5 文件状态讲解6.6 修改文件,不提交和上一个版本比较差异(diff)6.7 查看提交历史记录6.8 回退至历史版本6.9 文件删除6.9.1本地删除与恢复6.9.2从版本库删除6.9.3从版本库删除,但是不删除本地6.10 忽略提交7. Git 的基本使用02-TortoiseGit 操作本地仓库(分支)7.1 分支的概念7.2 为何要使用分支7.3 创建分支7.4 分支的查看切换7.4.1查看分支7.4.2切换分支7.5 分支的合并与删除7.5.1合并7.5.2删除分支8.tag 标签 8.1 标签的概念8.2 标签的创建(tag)8.3 标签的切换与删除9. 远程仓库9.0 局域网仓库9.0.1本地相对路径,多个文件夹之间共享代码9.0.2开启局域网共享代码9.1 常用远程仓库托管服务9.2 码云账号注册9.3 创建远程仓库9.4 把本地代码推送到远端9.5 从远程仓库克隆代码9.6 代码的修改与提交,查看历史9.7 ssh 连接概述9.8 ssh 密钥的生成9.9 ssh 密钥配置9.10 ssh 方式克隆/提交代码:9.11. 远程仓库的其他操作9.12 利用 gitee 搭建个人主页10.命令行-- git基本操作10.1 介绍10.2 环境配置10.3 初始化本地仓库 init10.4 克隆 clone10.5 查看状态 status10.6 add 10.7 commit10.8 删除 rm11. 命令行--git 远程仓库操作11.1 查看远程 11.2 添加/移除远测仓库11.3 从远程仓库获取代码12. 命令行-- 分支13 . 命令行 --tag14. 案例

 

1.版本管理工具概念

我在大学毕业写论文的时候的时候碰到过如下的现象

类似的问题我曾经也碰到过很多,例如:

实际上,代码开发中也需要这样的软件来管理我们的代码. 例如我们经常会碰到如下的现象:

在这种情况下如果不能查看修改之前的代码,查找问题是非常困难的.

如果有一个软件能记录我们对文档的所有修改,所有版本,那么上面的问题讲迎刃而解.而这类软件我们一般叫做版本控制工具

版本管理工具一般具有如下特性:

 

2. 版本管理工具介绍

现在比较流行的版本管理工具是git ,但是实际上git 是近几年才发展起来的,可能有一些老的项目,还在用一些老的软件,比如svn

2.1版本管理发展简史(维基百科)

1571983065236

2.1.1 SVN(SubVersion)

工作流程

优缺点:

svn流程图

 

 

2.1.2 Git

工作流程

总结:git和svn的区别

3. Git 发展简史

林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds, 1969年~ )

1571987252740

很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。

Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!

你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?那个年代不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。

不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。而授权的前提是:Linux 社区的人不能开发具有相同功能的竞争产品!

另一方面,BitKeeper不是开源的. 显然与Linux 的开源精神不相符,所以linux 社区的很多人抱怨,不愿意使用.

典型的就是 Andrew Tridgell (Samba 开发服务的创造者) 非常不满.偷偷违反了和 BitKeeper 的协议,反编译 BitKeeper 的源代码,开发了个爬虫,然后爬取信息被人发现了. BitKeeper 公司的领导非常不满意,然后开始发布消息说,(下个版本)不再为Linux 提供免费的服务.

Linus 本人就出面协调(几周或者几个月),但是不管用, 没办法. 估计谈判的过程感觉到了憋屈--"吃人嘴短,拿人手软"

Linus 本人 花了10天的时间Git 出来了,一个月之内,Linux系统的源码已经由Git管理了!

Linus 采访记录

Git 出来以后毕竟是一个人做的,开始并不好用(刚开始只能用勉强可以用来形容), 还是很多人抱怨,发展了很多年都没有干过其他软件.

直到 2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,从此git 迎来了飞速发展,当下git 已经成为了最流行的版本控制工具

4. Git 的安装

4.1 git 的下载

下载地址: https://git-scm.com/download

1571990833074

 

附件

1571991253594


4.2 安装

1) 按照附件的 顺序直接下一步傻瓜式安装即可

2) 其中安装的过程中需要填写一个邮箱和用户名(任意即可)

1572001054551

3)

4) 更改语言

1571992521110

5. Git 工作流程

5.1 Git 初始化

我们先初始化一个本地仓

1571993852280

此时 我们看到

5.2 git 流程

5.2.1 流程图

5.2.2概念即详解

6.Git 的基本使用01-TortoiseGit 操作本地仓库

6.1 初始化仓库

1572161580344

注意: 不要直接在桌面上操作,否则桌面就是一个仓库

1572162906623

1572163015102

创建完毕仓库,我们发现,此时我们创建的文件夹下有一个.git 文件已经生成了

并且仓库文件夹上多了一个 绿色图标

1572164583708

6.2 添加文件

1572164475555

1572165109016

6.3 提交文件至本地仓库

1572165471421

6.4 修改文件,与再次提交文件

1572165676716

 

6.5 文件状态讲解

这些文件的状态会随着我们执行Git的命令发生变化

6.6 修改文件,不提交和上一个版本比较差异(diff)

1572167540734

6.7 查看提交历史记录

1572167842481

6.8 回退至历史版本

1572171034508

6.9 文件删除

6.9.1本地删除与恢复

1572169387835

6.9.2从版本库删除

6.9.3从版本库删除,但是不删除本地

 

1572171572963

 

 

6.10 忽略提交

1572172137494

此时我们的根目录下会生成一个.gitignore 文件

忽略文件如何阅读,常见格式

当然理解了上述规则,我们也可以手动编辑该文件,而不用通过窗口化操作(如果不嫌麻烦)

7. Git 的基本使用02-TortoiseGit 操作本地仓库(分支)

7.1 分支的概念

7.2 为何要使用分支

先看单线程开发

1572173978185

1572174740013

7.3 创建分支

1572178189980

7.4 分支的查看切换

7.4.1查看分支

1572179420706

7.4.2切换分支

 

1572180057481

7.5 分支的合并与删除

7.5.1合并

1572180623156

 

7.5.2删除分支

1572183670465

 

5,冲突的处理 5.1)冲突的概念

1572181403239

5.2) 如何处理冲突

1572182565594

1572182727568

8.tag 标签

8.1 标签的概念

8.2 标签的创建(tag)

1572183849972

8.3 标签的切换与删除

1572184030612

1572184109746

 

 

 

9. 远程仓库

我们的代码不能总是放在本地,因为总是放在本地,一旦电脑出现故障,数据将丢失,怎么共享呢,这里我们需要一个服务器, 我们可以把代码放到服务器上,然后让别人下载,这样我峨嵋你既可以备份代码,也可以进行团队协作开发

9.0 局域网仓库

9.0.1本地相对路径,多个文件夹之间共享代码

1572535798760

9.0.2开启局域网共享代码

1572535921581

1572536029899

局域网这种共享是没有安全控制的,都可以访问,如果想要搭建一个可以控制权限的服务器需要借助第三方软件

gitblit,可以自行搜索搭建

9.1 常用远程仓库托管服务

除了自己搭建服务器,其实我们可以使用一些免费的远程仓库,远程仓库有很多,常见的免费互联网远程仓库托管服务如下:

鉴于国内用户可能网络不好,这里我们使用gitee(码云) 来讲解我们的课程,其他可自行找资料学习非常类似

9.2 码云账号注册

1572267659865

填写邮箱发送验证码,然后可以注册账号,主页如下

1572268091948

9.3 创建远程仓库

1572274044100

 

各个类型仓库之间的区别

1572274100802

1572274406371

9.4 把本地代码推送到远端

1572275202869

 

1572275492670

1572275546739

此时我们刷新仓库发现代码已经存在了

我们填写的用户信息,会被保存在本地,下次提交无需填写用户名和密码

1572277483698

 

 

9.5 从远程仓库克隆代码

我们同样可以从库下载代码,

新建一个文件夹 repo2 ,进入然后进行如下操作

1572275958701

此时我们发现我们的代码已经被下载下来了

9.6 代码的修改与提交,查看历史

1572277139243

9.7 ssh 连接概述

ssh 方式的底层原理

9.8 ssh 密钥的生成

1572520139221

1572520293700

9.9 ssh 密钥配置

1572520396806

9.10 ssh 方式克隆/提交代码:

配置完成之后我们克隆我们之前的项目

1572522118610

修改后直接提交推送即可成功,,git 会自动去.ssh 目录找我们的私钥进行匹配

9.11. 远程仓库的其他操作

概念

1572522822946

当我们从 gitee 上查看别人的项目的时候我们可能会看到上图中的按钮

1572523045267

项目操作

1)我们可以删除修改我们自己仓库的基本信息

2) 我们可以邀请其他人成为项目的开发人员或者管理人员

1572523819666

我们可以删除修改我们自己仓库的基本信息

1572523928774

1572523968992

9.12 利用 gitee 搭建个人主页

1572525575923

点击开启后gitee 会自动生成一个域名

1572526097257

直接访问即可

此时我们已经在git 上部署了一个静态的网站

1572526136074

10.命令行-- git基本操作

10.1 介绍

上述我们的操作 使用的 是客户端TortoiseGit 操作的git ,实际上底层依旧是使用的命令行帮我们执行, 在早期 git 并没有窗口化工具,开发人员只能使用命令行模式

实际上,如果你掌握并熟练使用了命令行模式操作git 的话,你会发现某些操作命令行比窗口化操作要简单

所有你在工作中会发现高深的技术人员可能会喜欢命令行模式提交git

10.2 环境配置

当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息

10.3 初始化本地仓库 init

10.4 克隆 clone

10.5 查看状态 status

10.6 add

10.7 commit

10.8 删除 rm

11. 命令行--git 远程仓库操作

11.1 查看远程

11.2 添加/移除远测仓库

11.3 从远程仓库获取代码

注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories ),解决此问题可以在git pull命令后加入参数--allow-unrelated-histories (如上 命令)

12. 命令行-- 分支

13 . 命令行 --tag

14. 案例

 

 

 

 

 

 

 

 

 

 

`