版本控制工具-Git-入门到精通

在这里插入图片描述
版本控制工具-Git-入门到精通_第1张图片
版本控制工具-Git-入门到精通_第2张图片
在这里插入图片描述
版本控制工具-Git-入门到精通_第3张图片
版本控制工具-Git-入门到精通_第4张图片
版本控制工具-Git-入门到精通_第5张图片
版本控制工具-Git-入门到精通_第6张图片
版本控制工具-Git-入门到精通_第7张图片
版本控制工具-Git-入门到精通_第8张图片
版本控制工具-Git-入门到精通_第9张图片
版本控制工具-Git-入门到精通_第10张图片
版本控制工具-Git-入门到精通_第11张图片
版本控制工具-Git-入门到精通_第12张图片
在这里插入图片描述
版本控制工具-Git-入门到精通_第13张图片
版本控制工具-Git-入门到精通_第14张图片
版本控制工具-Git-入门到精通_第15张图片
版本控制工具-Git-入门到精通_第16张图片
版本控制工具-Git-入门到精通_第17张图片
在这里插入图片描述
版本控制工具-Git-入门到精通_第18张图片
版本控制工具-Git-入门到精通_第19张图片
版本控制工具-Git-入门到精通_第20张图片
版本控制工具-Git-入门到精通_第21张图片
版本控制工具-Git-入门到精通_第22张图片
版本控制工具-Git-入门到精通_第23张图片
版本控制工具-Git-入门到精通_第24张图片
版本控制工具-Git-入门到精通_第25张图片
版本控制工具-Git-入门到精通_第26张图片
版本控制工具-Git-入门到精通_第27张图片
版本控制工具-Git-入门到精通_第28张图片
版本控制工具-Git-入门到精通_第29张图片
版本控制工具-Git-入门到精通_第30张图片
版本控制工具-Git-入门到精通_第31张图片
版本控制工具-Git-入门到精通_第32张图片
版本控制工具-Git-入门到精通_第33张图片
版本控制工具-Git-入门到精通_第34张图片
版本控制工具-Git-入门到精通_第35张图片
版本控制工具-Git-入门到精通_第36张图片
版本控制工具-Git-入门到精通_第37张图片
版本控制工具-Git-入门到精通_第38张图片
版本控制工具-Git-入门到精通_第39张图片
版本控制工具-Git-入门到精通_第40张图片
版本控制工具-Git-入门到精通_第41张图片
在这里插入图片描述
版本控制工具-Git-入门到精通_第42张图片
版本控制工具-Git-入门到精通_第43张图片
版本控制工具-Git-入门到精通_第44张图片
版本控制工具-Git-入门到精通_第45张图片
版本控制工具-Git-入门到精通_第46张图片
版本控制工具-Git-入门到精通_第47张图片
版本控制工具-Git-入门到精通_第48张图片
版本控制工具-Git-入门到精通_第49张图片
版本控制工具-Git-入门到精通_第50张图片
版本控制工具-Git-入门到精通_第51张图片
版本控制工具-Git-入门到精通_第52张图片
版本控制工具-Git-入门到精通_第53张图片
版本控制工具-Git-入门到精通_第54张图片
版本控制工具-Git-入门到精通_第55张图片
版本控制工具-Git-入门到精通_第56张图片
版本控制工具-Git-入门到精通_第57张图片
版本控制工具-Git-入门到精通_第58张图片
版本控制工具-Git-入门到精通_第59张图片
版本控制工具-Git-入门到精通_第60张图片
版本控制工具-Git-入门到精通_第61张图片
版本控制工具-Git-入门到精通_第62张图片
版本控制工具-Git-入门到精通_第63张图片
版本控制工具-Git-入门到精通_第64张图片
版本控制工具-Git-入门到精通_第65张图片
版本控制工具-Git-入门到精通_第66张图片
版本控制工具-Git-入门到精通_第67张图片
版本控制工具-Git-入门到精通_第68张图片
版本控制工具-Git-入门到精通_第69张图片
版本控制工具-Git-入门到精通_第70张图片
版本控制工具-Git-入门到精通_第71张图片
版本控制工具-Git-入门到精通_第72张图片
版本控制工具-Git-入门到精通_第73张图片
版本控制工具-Git-入门到精通_第74张图片
版本控制工具-Git-入门到精通_第75张图片
版本控制工具-Git-入门到精通_第76张图片
版本控制工具-Git-入门到精通_第77张图片
版本控制工具-Git-入门到精通_第78张图片
版本控制工具-Git-入门到精通_第79张图片
版本控制工具-Git-入门到精通_第80张图片
版本控制工具-Git-入门到精通_第81张图片
版本控制工具-Git-入门到精通_第82张图片
版本控制工具-Git-入门到精通_第83张图片
在这里插入图片描述
在这里插入图片描述
版本控制工具-Git-入门到精通_第84张图片
版本控制工具-Git-入门到精通_第85张图片
版本控制工具-Git-入门到精通_第86张图片
版本控制工具-Git-入门到精通_第87张图片
版本控制工具-Git-入门到精通_第88张图片
版本控制工具-Git-入门到精通_第89张图片
版本控制工具-Git-入门到精通_第90张图片
版本控制工具-Git-入门到精通_第91张图片
版本控制工具-Git-入门到精通_第92张图片
版本控制工具-Git-入门到精通_第93张图片
版本控制工具-Git-入门到精通_第94张图片
在这里插入图片描述
版本控制工具-Git-入门到精通_第95张图片
版本控制工具-Git-入门到精通_第96张图片
版本控制工具-Git-入门到精通_第97张图片
版本控制工具-Git-入门到精通_第98张图片
版本控制工具-Git-入门到精通_第99张图片
版本控制工具-Git-入门到精通_第100张图片
版本控制工具-Git-入门到精通_第101张图片
版本控制工具-Git-入门到精通_第102张图片
版本控制工具-Git-入门到精通_第103张图片
版本控制工具-Git-入门到精通_第104张图片
版本控制工具-Git-入门到精通_第105张图片
版本控制工具-Git-入门到精通_第106张图片
版本控制工具-Git-入门到精通_第107张图片
版本控制工具-Git-入门到精通_第108张图片
版本控制工具-Git-入门到精通_第109张图片
版本控制工具-Git-入门到精通_第110张图片
版本控制工具-Git-入门到精通_第111张图片
版本控制工具-Git-入门到精通_第112张图片
版本控制工具-Git-入门到精通_第113张图片
版本控制工具-Git-入门到精通_第114张图片
版本控制工具-Git-入门到精通_第115张图片
版本控制工具-Git-入门到精通_第116张图片
版本控制工具-Git-入门到精通_第117张图片
版本控制工具-Git-入门到精通_第118张图片
版本控制工具-Git-入门到精通_第119张图片
版本控制工具-Git-入门到精通_第120张图片
版本控制工具-Git-入门到精通_第121张图片
在这里插入图片描述
版本控制工具-Git-入门到精通_第122张图片
版本控制工具-Git-入门到精通_第123张图片
版本控制工具-Git-入门到精通_第124张图片
版本控制工具-Git-入门到精通_第125张图片
在这里插入图片描述
版本控制工具-Git-入门到精通_第126张图片
版本控制工具-Git-入门到精通_第127张图片
版本控制工具-Git-入门到精通_第128张图片
版本控制工具-Git-入门到精通_第129张图片
版本控制工具-Git-入门到精通_第130张图片
版本控制工具-Git-入门到精通_第131张图片
在这里插入图片描述
在这里插入图片描述
版本控制工具-Git-入门到精通_第132张图片
在这里插入图片描述
版本控制工具-Git-入门到精通_第133张图片
版本控制工具-Git-入门到精通_第134张图片
版本控制工具-Git-入门到精通_第135张图片
版本控制工具-Git-入门到精通_第136张图片
在这里插入图片描述
版本控制工具-Git-入门到精通_第137张图片
在这里插入图片描述
版本控制工具-Git-入门到精通_第138张图片
版本控制工具-Git-入门到精通_第139张图片
在这里插入图片描述
版本控制工具-Git-入门到精通_第140张图片
版本控制工具-Git-入门到精通_第141张图片
在这里插入图片描述
在这里插入图片描述
版本控制工具-Git-入门到精通_第142张图片
在这里插入图片描述
版本控制工具-Git-入门到精通_第143张图片
在这里插入图片描述
在这里插入图片描述
版本控制工具-Git-入门到精通_第144张图片
在这里插入图片描述
版本控制工具-Git-入门到精通_第145张图片
版本控制工具-Git-入门到精通_第146张图片
版本控制工具-Git-入门到精通_第147张图片
版本控制工具-Git-入门到精通_第148张图片
版本控制工具-Git-入门到精通_第149张图片
版本控制工具-Git-入门到精通_第150张图片
在这里插入图片描述
版本控制工具-Git-入门到精通_第151张图片
版本控制工具-Git-入门到精通_第152张图片
版本控制工具-Git-入门到精通_第153张图片
版本控制工具-Git-入门到精通_第154张图片
版本控制工具-Git-入门到精通_第155张图片
版本控制工具-Git-入门到精通_第156张图片
版本控制工具-Git-入门到精通_第157张图片
在这里插入图片描述
版本控制工具-Git-入门到精通_第158张图片
版本控制工具-Git-入门到精通_第159张图片
版本控制工具-Git-入门到精通_第160张图片
版本控制工具-Git-入门到精通_第161张图片
版本控制工具-Git-入门到精通_第162张图片
版本控制工具-Git-入门到精通_第163张图片
版本控制工具-Git-入门到精通_第164张图片
版本控制工具-Git-入门到精通_第165张图片
版本控制工具-Git-入门到精通_第166张图片
版本控制工具-Git-入门到精通_第167张图片
版本控制工具-Git-入门到精通_第168张图片
版本控制工具-Git-入门到精通_第169张图片
版本控制工具-Git-入门到精通_第170张图片
版本控制工具-Git-入门到精通_第171张图片
版本控制工具-Git-入门到精通_第172张图片
版本控制工具-Git-入门到精通_第173张图片
版本控制工具-Git-入门到精通_第174张图片
版本控制工具-Git-入门到精通_第175张图片
版本控制工具-Git-入门到精通_第176张图片
版本控制工具-Git-入门到精通_第177张图片
版本控制工具-Git-入门到精通_第178张图片
版本控制工具-Git-入门到精通_第179张图片
版本控制工具-Git-入门到精通_第180张图片
版本控制工具-Git-入门到精通_第181张图片
版本控制工具-Git-入门到精通_第182张图片
版本控制工具-Git-入门到精通_第183张图片
版本控制工具-Git-入门到精通_第184张图片
版本控制工具-Git-入门到精通_第185张图片
版本控制工具-Git-入门到精通_第186张图片
版本控制工具-Git-入门到精通_第187张图片
版本控制工具-Git-入门到精通_第188张图片
版本控制工具-Git-入门到精通_第189张图片
版本控制工具-Git-入门到精通_第190张图片
版本控制工具-Git-入门到精通_第191张图片
版本控制工具-Git-入门到精通_第192张图片
版本控制工具-Git-入门到精通_第193张图片
版本控制工具-Git-入门到精通_第194张图片
在这里插入图片描述
版本控制工具-Git-入门到精通_第195张图片
版本控制工具-Git-入门到精通_第196张图片
版本控制工具-Git-入门到精通_第197张图片
版本控制工具-Git-入门到精通_第198张图片
版本控制工具-Git-入门到精通_第199张图片
版本控制工具-Git-入门到精通_第200张图片
版本控制工具-Git-入门到精通_第201张图片
版本控制工具-Git-入门到精通_第202张图片
版本控制工具-Git-入门到精通_第203张图片
版本控制工具-Git-入门到精通_第204张图片
在这里插入图片描述

00、课程目标

目标1: 了解git 历史

目标2: 了解git 与 svn 的区别

目标3: 掌握git 的工作流程

目标4: 熟悉git 安装使用

目标5: 掌握git 管理文件版本

目标6: 掌握使用远程仓库

目标7: 掌握分支管理

目标8: 掌握IDEA 操作 Git

第一部分:Git的简介与安装

01、版本控制是什么?

**目标:**掌握和了解Git是什么,在实际应用中处于什么角色。

需求

在项目开发中,团队协作管理代码和文件是每天必须要做的事情。大家一定会碰到如下几个场景和问题?

1:协同修改,多人并行开发修改服务器的文件
2:数据备份
3:版本管理,权限控制
4:如果文件和工程误删了还能找回来吗?
5:分支管理 1.0 2.0
6:遇到了文件冲突如何解决?
7:如何把一些我临时保存的文件不要提交?

Svn版本控制软件:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JKP2D9jk-1605437019741)(assets/1571966237833.png)]

Git版本控制器软件:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0qMBeqHW-1605437019743)(assets/1571966652553.png)]

小结

  • svn和git都是做版本控制的,如果不理解一句话: 记录代码的轨迹就好比每个人的成长阶段一样。

02、Git的由来和发展史

目标:学习和掌握git的发展史及特点

概述

同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代。

Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002 年间)。到 2002 年,Linux 系统已经发展了十年了,代码库之大让 Linus 很难继续通过手工方式管理了,于是整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护代码。

到 2005 年的时候,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds )不得不吸取教训,只有开发一套属于自己的版本控制系统才不至于重蹈覆辙。他们对新的系统订了若干目标:

• 速度快 
• 简单的设计 
• 对非线性开发模式的强力支持(允许上千个并行开发的分支) 
• 完全分布式 
• 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量) 

Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。

Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站(基友网站)上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-suPMHyGO-1605437019745)(assets/1571726570657.png)]

03、Git与Svn区别

目标:Git与Svn区别

3.1 集中式版本控制(Svn)

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就郁闷了。

下图就是标准的集中式版本控制工具管理方式:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LMLfebUc-1605437019750)(assets/1571728355239.png)]

集中管理方式在一定程度上看到其他开发人员在干什么,而管理员也可以很轻松掌握每个人的开发权限。

但是相较于其优点而言,集中式版本控制工具缺点很明显:

服务器单点故障
容错性差

3.2 分布式版本控制(Git)

Git是分布式版本控制系统,那么它可以没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

下图就是分布式版本控制工具管理方式:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X3M5IE3W-1605437019753)(assets/1571728415965.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BKZJ5k5w-1605437019761)(assets/image-20200707090916595.png)]

小结

  • svn是集中式的版本控制,版本库放在中央仓库。git是分布式的版本控制,版本库放在用户自己的电脑。
  • svn不支持离线工作,因为版本库全部都放在是中央服务器。如果中央服务器挂了。那么版本全部丢失。
  • git支持离线工作。版本都放用户自己电脑上完成。---- 分布式的版本控制。
  • svn是项目对仓库(一个仓库可以存放多个项目),git是仓库对仓库(一个仓库只能存放一个项目)。

04、GitHub和码云

**目标:**了解github与码云代码托管中心

比较出名的代码托管中心: GitHub 和 码云

4.1 什么是GitHub?

确切的说 GitHub 是一家公司,位于旧金山,由 Chris Wanstrath, PJ Hyett 与 Tom Preston-Werner 三位开发者在2008年4月创办。这是它的 Logo:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zfYDF3h3-1605437019763)(assets/clip_image004.jpg)]

2008年4月10日,GitHub正式成立,地址:How people build software · GitHub ,主要提供基于git的版本托管服务。一经上线,它的发展速度惊为天人,截止目前,GitHub 已经发展成全球最大的开源社区。所以 Git 只是 GitHub 上用来管理项目的一个工具而已,GitHub 的功能可远不止于此!微软76亿美金收购Github

4.2 什么是码云?

我们使用GitHub的时候,会感觉比较慢,为什么? 原因就是GitHub在遥远的美国,由于各种原因造成访问速度不怎么好,所以国内的git服务提供商,码云就起来了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MZzfVlZo-1605437019766)(assets/1571727595825.png)]

4.3 产品功能对比

功能 码云 Gitee GitHub
代码托管,支持 Git/SVN
开源项目、代码片段
Issue
Wiki
Fork + Pull Request
组织
私有仓库免费协作人数 5 人 3 人
保护分支 免费 收费
在线 IDE(Gitee IDE) 不支持
仓库自动备份 不支持
禁止 Git 强推 不支持
支持仓库访问 IP 限制 不支持
企业级研发协作 5 人免费 收费
敏捷开发管理
任务看板(可灵活定义)
支持多级任务、关联任务
自动代码质量分析
快捷生成工作周报
代码克隆检测
自动生成 JavaDoc/PHPDoc
多语言 README 自动渲染
支持微信/钉钉通知

4.4 协作开发流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MUQgADOz-1605437019768)(assets/1571625695350.png)]

05、Git安装:客户端和服务端

前提

  • 现在已经明白Git是一款版本控制工具。和Svn一样分为客户端和服务端。
  • 服务端用来创建仓库保存文件的版本信息。客户端用来控制服务端的文件的维护操作。

5.1 下载

https://git-scm.com/download

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fgVnmLUl-1605437019770)(assets/1571728728098.png)]

安装教程:安装Git服务端

这是 windows 版本的 git 服务器;所以必须安装;安装说明详情见“资料”下的《Windows 系统安装 Git 2.14.1.docx》

5.2 安装

双击安装:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JUtWAhrS-1605437019772)(assets/1573262288702.png)] 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R23MNF22-1605437019773)(assets/1573262034597.png)]

一路“Next”使用默认选项即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PmjkPUzL-1605437019775)(assets/1573262224843.png)]

安装完成后,可以在任意文件夹点右键,看到如下菜单:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d1HLEIpY-1605437019779)(assets/1573262669787.png)]

新建D:\test文件夹,在test上面,点击Git的控制台,在控制台输入git,可以看到相关的帮助信息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DOUcOB3Y-1605437019781)(assets/1573265813490.png)]

5.3 全局账户配置

  • 配置签名: 用户名和邮箱(提交的用户名与邮箱)

    • git config --global user.name “nameVal”

    • git config --global user.email “emailVal”

      git config --global user.name "jet"
      git config --global user.email "[email protected]"
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x0HQaTF1-1605437019783)(assets/1573317337154.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9DlRCpWu-1605437019784)(assets/1571730311528.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zd3c5ufW-1605437019786)(assets/1571730279226.png)]

      细节:

      局部的用户信息放在:当前项目的   .git/config
      全局的用户信息放在:系统盘的--用户目录--用户名目录-- .gitconfig文件中
      [C:\Users\Administrator\.gitconfig]
      

第二部分:Git命令入门到精通

06、Git命令:创建版本库

**目标:**知道什么是版本库,并且创建它

什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。由于git是分布式版本管理工具,所以git在不需要联网的情况下也具有完整的版本管理能力。

创建一个版本库非常简单:

  • 首先,选择一个合适的地方,创建一个空目录。在D:\test目录下,创建了一个hello目录: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4K057dl8-1605437019788)(assets/clip_image023.jpg)]

  • 使用git init命令把这个目录变成Git可以管理的仓库:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mlWwFok4-1605437019790)(assets/clip_image025.jpg)]

  • 命令输入后,你已经创建了一个空的Git仓库。此时你会在hello目录下发现一个隐藏目录.git [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W1ngVKIn-1605437019792)(assets/clip_image027.jpg)]

    这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

    此处的hello目录就是我们的:工作区 (work tree),存放所有当前文档。此目录下的文件才会被Git管理,hello中的.git目录就是我们的:本地仓库,管理并保存所有的文档变化及历史状态。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A0QREiNz-1605437019794)(assets/image-20200707094840944.png)]

版本库核心文件的解释

目录 描述
config 该文件主要记录针对该项目的一些配置信息,例如是否以bare方式初始化、remote的信息等,通过git remote add命令增加的远程分支的信息就保存在这里;
objects Git中的文件和一些操作都会以git对象来保存,git对象分为BLOB、tree和commit三种类型,例如git commit便是git中的commit对象,而各个版本之间是通过版本树来组织的,比如当前的HEAD会指向某个commit对象,而该commit对象又会指向几个BLOB对象或者tree对象。
HEAD 该文件指明了git branch(即当前分支)的结果,比如当前分支是master,则该文件就会指向master,但是并不是存储一个master字符串,而是分支在refs中的表示,例如ref: refs/heads/master
index 该文件保存了暂存区域的信息。该文件某种程度就是缓冲区(staging area),内容包括它指向的文件的时间戳、文件名、sha1值等;
Refs 该文件夹存储指向数据(分支)的提交对象的指针。

小结

创建版本库的命令步骤是? git init

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WIwGuDnE-1605437019796)(assets/image-20200707094913555.png)]

07、Git命令:添加文件并提交

**目标:**Git是如何在仓库中添加文件并提交到本地仓库?

版本控制系统,其目的就是跟踪文本文件的改动,例如我们开发时编写的.java、.properties本质都是文本文件。文件中每一个字符的变化都会被跟踪并且管理。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w5cnWRVo-1605437019800)(assets/1552015317597.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qXa1WHdu-1605437019801)(assets/1551861304830.png)]

  • 我们在当前的hello目录下创建一个新的文本文件:readme.txt

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IidTucld-1605437019805)(assets/clip_image029.jpg)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B1HzJr3F-1605437019807)(assets/clip_image031.jpg)]

  • 编写一段文字:hello Git!

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5uN8ksfB-1605437019809)(assets/clip_image033.jpg)]

  • 接下来,我们使用 git add 命令,将文件添加到暂存区[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BavA0w1D-1605437019813)(assets/clip_image035.jpg)]

    没有任何的反应,证明没有问题。

  • 使用 git commit 命令,将暂存区文件提交到本地仓库[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4NWBlYsf-1605437019815)(assets/clip_image037.jpg)]

命令解释:

git commit 命令可以将暂存区的文件提交到版本库。

-m 参数,是本次提交的说明信息,用来注释本次提交做了些说明事情。

**总结: **将一个文件添加到本地仓库,分两步:

1)git add 文件/. (到暂存区)

2)git commit -m ‘注释’(到版本库)

演示的命令如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7PngeAao-1605437019817)(assets/image-20200707095746816.png)]

可能大家会有疑问,为什么这里不是直接commit提交,而是要经过add和commit两个步骤呢?

这就关系到Git的版本库中的 工作区 暂存区概念了。

08、Git概念:工作区、暂存区、版本库

**目标:**理解Git 工作区、暂存区和版本库概念

工作区:

  • 工作区就是你在电脑里能看到的目录。比如我们刚刚创建的hello目录:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZajlVsYr-1605437019819)(assets/clip_image039.jpg)]

    其中包含了一个隐藏目录 .git ,其它就是我们需要被管理的文件。

版本库及暂存区:

  • 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
  • Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C9sstmVm-1605437019824)(assets/clip_image041.jpg)]  

前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

为什么Git会设计暂存区?

Git暂存区的目的在于分段提交!怎么理解?

Git的add是可以选择文件的,commit是不能选择文件的!Git的commit(提交操作)是原子操作,意味着一次提交会把所有文件全部提交,如果失败则一个文件都不提交。如果Git没有暂存区,工作区修改的代码 就只能一次全部提交,而在实际开发过程中,我们在开发过程中可能会出现突发的Bug需要修复,这时我们只需要选择提交修改好的Bug的文件即可,从而实现分段提交的效果。

**小结:**你可以简单理解为,需要提交的文件通通先放到暂存区,然后,一次性提交暂存区到版本库(分支)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WOe7WJqJ-1605437019827)(assets/image-20200707100119399.png)]

09、Git命令:比较差异、状态、日志

**目标:**掌握文件的修改以及修改的提交及状态日志的查看

  • 被版本库管理的文件不可避免的要发生修改,此时只需要直接对文件修改即可。修改完毕后需要将文件的修改提交到版本库。

  • 我们对readme.txt文件进行修改,添加一行数据:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NZoNlPT5-1605437019828)(assets/1571732075149.png)]

9.1 比较差异


> git diff readme.txt      将工作区的文件和暂存区进行比较差异

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XKmCkDkw-1605437019830)(assets/image-20200704101040007.png)]

可以发现,与版本库中的 readme.txt相比,我们多了一行文本!

9.2 查看修改状态


我们如果不确定自己的哪些文件被修改了,可以使用git status命令,查看当前工作区的状态: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CYD9vCgV-1605437019831)(assets/clip_image047.jpg)]

可以清楚的看到:changes not staged for commit(修改没有被缓存,需要使用git add来进行添加操作),我们使用git add 命令,添加到暂存区:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OtO9JlQu-1605437019833)(assets/clip_image049.jpg)]

再次查看状态:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-66hmQNhH-1605437019837)(assets/clip_image051.jpg)]

这次提示: changes to be commited (修改需要被提交),我们使用git commit 进行提交[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YyJm2wGE-1605437019839)(assets/clip_image053.jpg)]

再次查看状态:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v2DOrLkd-1605437019843)(assets/clip_image055.jpg)]

提示说:工作区很干净,没有任何需要提交,搞定!

再次修改readme.txt 新增内容: Test version control. 提交到版本库[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WwIwqMDK-1605437019845)(assets/1573270158812.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3gLLXcgc-1605437019846)(assets/1573270445099.png)]

9.3 查看日志


git log  整体展示,不直观,如果要翻页,一直按enter键进行翻页,按CTRL+C退出

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hir1YcjW-1605437019848)(assets/1571733099690.png)]

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline(一行显示)参数:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qLFQxHix-1605437019851)(assets/clip_image063.jpg)]

  • 可以发现,目前为止,我们已经在本地仓库中提交了3次,也就是说有3个不同版本。其中,最近的这个版本有一个标示:HEAD ,这就是标记当前分支的当前版本所在位置。本例当中,当前版本即 test version control这次提交。

  • 另外,在log中,每一个版本的前面,都有一长串随即数字:5bc7781319b…192728 ,这是每次提交的commit id ,这是通过SHA1算法得到的值,Git通过这个唯一的id来区分每次提交。

  • 美化的缩小版

     git log --oneline
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3mtr2wqI-1605437019853)(assets/1573270628606.png)] 

小结

比较差异、查看修改状态、查看日志的命令是什么?

git diff readme.txt 比较工作区与暂存区的差异

git status 查看状态

git log --oneline 查看日志,一行显示,日志的版本号只显示前7位(前7位可以表示整个版本号)

10、Git命令:版本回退(切换版本)

**目标:**使用git命令git reset 找回文件回退到历史版本

现在,假设我们要回到上一级版本,该如何操作呢?

  • 首先,Git通过HEAD来判断当前所在的版本位置。那么上一个版本,就用HEAD标示,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。
  • 如果要从 “test version control” 回退到 “modify readme file” ,我们可以使用 git reset 命令。

10.1 查看所有关联日志

我们可以通过git reflog命令,看到以前的每次执行动作:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wHt3Zvf6-1605437019855)(assets/1573273912620.png)]

其中红框内的部分,就是我们第三次提交的日志信息。前面的Obd575f就是第三次提交的 commit id 的前几位数字。

10.2 回退到某个版本

  • 语法: git reset --hard ‘版本号’

     git reset --hard 0712188
    

    提示说:HEAD 现在已经被设置到 0712188 的版本,即 modify readme file。

    我们查看readme.txt,果然,版本已经回退了,最新添加的数据“Test version control”已经没了。

    此时再次查看日志,发现只剩下2次提交信息了,第三次提交的信息已经没了:

​ 假如此时我后悔了,还想回到第3次提交的版本,怎么办?

    • 查看日志,得到版本号,回退指定版本:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DTKl5uua-1605437019856)(assets/1573274558778.png)]查看文件:(数据又回来了!)

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B5W9jBKY-1605437019858)(assets/clip_image077.jpg)]

总结:

如果要进行版本回退,一般分两步:

  • 通过 git log 或 git reflog 查看操作日志吗,查找版本的commit id(版本号)
  • 通过 git reset --hard 设置HEAD到指定版本 (回退)

其实版本的回退,仅仅是修改HEAD指针的位置而已,因此Git进行版本的切换,比svn要快的多!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-upBq30ac-1605437019859)(assets/1571972378334.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jxzZX3b4-1605437019861)(assets/1571972348985.png)]

11、Git命令:撤销修改

**目标:**掌握文件修改的撤销

11.1 撤销工作区修改

现在我们在readme.txt中添加一行数据:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k45UkkWb-1605437019864)(assets/clip_image079.jpg)]

  • 在你提交前,你突然发现这个修改是有问题的,你打算恢复到原来的样子。怎么办?
  • 如果修改的并不多,我们完全可以手动恢复到原始状态。但是如果改动比较大,手动处理就很容易有遗漏,而且很麻烦。怎么办?

查看状态:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gnwe2NOo-1605437019865)(assets/clip_image081.jpg)]

Git提示我们,现在文件已经修改,等待被staged(暂存)。我们有两个选择:

  • 可以使用git add 来添加到暂存区,接着去提交文件。
  • 可以使git checkout – 来撤销修改。

所以,这里我们选择第二种方案:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AZirwj9I-1605437019868)(assets/clip_image083.jpg)]

再次查看状态:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HdnP81Cm-1605437019870)(assets/clip_image085.jpg)]

工作区是干净的!查看文件:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCXhlr7O-1605437019872)(assets/clip_image087.jpg)]

修改已经被撤销了!

11.2 撤销staged(暂存区)修改

  • 刚才的案例中,我们修改了数据,并没有add带暂存区,处理起来还算简单。
  • 如果我们已经把数据add 到了暂存区,又该如何处理呢?我们首先添加一行数据到readme.txt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eeZL0pdl-1605437019873)(assets/clip_image089.jpg)]

  • 并且添加到staged(暂存区),然后查看状态:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m5nvsC1e-1605437019875)(assets/clip_image091.jpg)]

  • 有一个修改等待被提交,并且有一行提示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K7C8AtTN-1605437019880)(assets/clip_image093.jpg)]

  • 可以使用 git reset HEAD 来撤销缓存修改。

我们前面说过,git reset 命令可以进行版本回退,此处reset 指定的是HEAD ,而不是其他版本,因此就有撤销缓存修改的作用:

git reset HEAD readme.txt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZOqx3gvz-1605437019881)(assets/clip_image095.jpg)]

查看状态:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uNm8bJff-1605437019883)(assets/clip_image097.jpg)]

发现文件的修改被撤回到了工作区,尚未添加到staged(暂存区),我们再次执行git checkout – 即可撤销工作区修改

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cDVkGkWp-1605437019884)(assets/clip_image099.jpg)]

工作区干净了!查看文件:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XcaYMwWF-1605437019886)(assets/clip_image101.jpg)]

文件也恢复了原来的状态,整个世界都清净了!

小结:

撤销修改分两种情况:

  • 撤销工作区修改,使用git checkout –

  • 撤销暂存区修改,分两步:

    • 使用git reset HEAD 来撤销暂存区修改。

    • 使用git checkout – 来撤销工作区修改。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6iZpJayR-1605437019887)(assets/image-20200707102501065.png)]

12、Git:忽略文件

问题

往往在开发的过程中,特别是在多人协作的场景下,可能需要把一些无用的文件不需要提交。GIT是如何来做的的呢?

图解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z4ePY6H8-1605437019889)(assets/1552017055333.png)]

在当前工作区创建忽略文件:.gitignore

# 1: 打开`git bash here` 输入如下命令:
vim .gitignore
target
*.iml
.idea

# 2: 保存退出 
:wq

gitignore 语法规则:

空行或是以 # 开头的行即 注释行,将会被忽略。

示例如下:

# 忽略所有 .a 文件

*.a

# 递归忽略 build/ 文件夹下的所有文件

build

# 忽略 /doc/notes.txt,不包括 doc/server/arch.txt

doc/*.txt

# 忽略所有的 .pdf 文件 在 doc/ directory 下的

doc/**/*.pdf

第三部分:Git的远程仓库【重点】

13、远程仓库:注册、创建仓库、推送

问题

  • 之前我们讲的文件版本控制都是在本机的本地仓库中进行操作,如何进行团队协作开发,怎么把我们本地仓库的代码共享出来供团队的其他开发员下载使用呢?

    没错就是:远程仓库。

13.1 介绍

到目前为止,我们已经学会了如何在本机利用git进行文件版本管理,但是如果要想进行多人协作,我们就必须使用远程仓库。将本地仓库的数据同步到远程仓库,实现多人协作开发。

  • 目前比较热门的代码托管社区:GitHub,网址:https://gtihub.com ,提供了免费的远程git仓库功能。不过网速不是特别流畅。

  • 在国内,有很多的公司使用oschina提供的git服务:码云, https://gitee.com。

  • 也可以自己搭建:gitlab。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yfKHHzfg-1605437019890)(assets/1552011927979.png)]

13.2 github

  • 注册 https://github.com/join

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qbzvtXZw-1605437019892)(assets/1551778168169.png)] 

  • 创建远程仓库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X5sgRYkV-1605437019893)(assets/1573285784447.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1SeX7cjj-1605437019895)(assets/1585233100063.png)]

  • 详细介绍远程仓库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BqkoeZRv-1605437019896)(assets/1551778325768.png)] 

13.3 码云

  • 注册: https://gitee.com/signup

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RLkhFzIp-1605437019897)(assets/1562118994650.png)]

  • 创建远程仓库

    • 在页面右侧,选择创建新的仓库

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eS525gC1-1605437019899)(assets/1573286509957.png)]

    • 填写仓库信息:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rCbYIxo7-1605437019901)(assets/1573286805103.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HgXFcJZd-1605437019902)(assets/1573287031824.png)]

    • 仓库创建完毕,可以看到,如果我们要与远程仓库同步,这里支持两种不同的通信协议,ssh和http。当我们选中一种协议后,后面会出现对应的远程仓库地址。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qI0jdbws-1605437019903)(assets/1573287264904.png)]

13.4 关联远程仓库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Etl19xI9-1605437019904)(assets/1552013586401.png)]

  • 操作步骤

    • 添加或删除关联远程仓库

      git remote add origin url   # 为当前本地仓库添加关联的远程仓库
      git remote rm origin        # 从当前本地仓库中删除关联的远程仓库
      

      origin: 为远程仓库起个别名

      url: 远程url

    • 添加本地仓库和远程仓库关联-https连接 (第一种方式)

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bfoSKNCF-1605437019906)(assets/1573288233369.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UfLC7HBd-1605437019907)(assets/1573288162164.png)]

      # 执行此命令必须要进入该仓库对应的工作区
      # github
      git remote add origin https://github.com/lixiaohua1/gitdemo.git
      # 码云
      git remote add origin2 https://gitee.com/leesiuwah/gitdemo.git
      
      # 如果删除之前关联:
      git remote rm origin
      git remote add origin 改成新的地址
      

      注: 初次关联使用提交代码的时候需要填写,账号和密码信息(为github 或 码云 的登录用户名与密码)。用户名:[email protected] 密码: xxxxx

      【稍后再使用】: 添加本地仓库和远程仓库关联-ssh连接(第二种方式: 免密)

    • 同步本地仓库到远程仓库的命令:

      # 同步本地仓库到远程仓库
      # github
      git push -u origin master
      # 码云
      git push -u origin2 master
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KgEax94l-1605437019908)(assets/1573289308393.png)]

      注:origin 可以理解为远程仓库的别名,master 主分支。

小结

git remote add 别名 url地址 设置远程仓库的地址

git push -u 别名 分支名称 把本地仓库代码推送到指定的远程仓库

14、远程仓库:克隆远程仓库到本机

目标: 如何克隆远程仓库到本机呢?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-19UweQYk-1605437019910)(assets/1552012770907.png)]

操作命令

# 克隆远程仓库到本机
# git clone ssh/https 
# github
git clone https://github.com/lixiaohua1/gitdemo.git
# 码云
git clone https://gitee.com/leesiuwah/gitdemo.git

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eSI84S3F-1605437019912)(assets/1573291519356.png)]

注意:新克隆下来的远程仓库访问名称默认为 origin

15、远程仓库:同步远程仓库到本地仓库

**目标:**如何同步远程仓库的代码到本地仓库到呢?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BSHP4529-1605437019918)(assets/1551861817226.png)]

git命令

# 更新远程仓库到本地仓库
git pull origin master

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aVHvRU7x-1605437019920)(assets/1573293117681.png)]

如果出现如下问题

 ! [rejected]  master -> master (fetch first)
error: failed to push some refs to 'https://gitee.com/kekesam/pingyougou2.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

解决方案

git push -f origin master

说明: 它会把远程仓库中所有的信息全部清空,在把本机仓库版本提交上去。

16、远程仓库:SSH连接和注意事项

目标:掌握ssh协议免密的配置

  • 连接远程仓库,势必会进行其用户验证,这个时候需要频繁的输入用户的账号信息,有没有一种能够免密的操作呢?为什么我们连接好以后就不需要配置用户名和密码了呢?因为windows10系统会帮我们记录用户的凭据信息可以在【控制面板】—凭据管理中获得。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-21W7ierU-1605437019924)(assets/1571735966405.png)]

  • 但是很遗憾的是: 在window7系统中没有这种凭据,https的这种方式可能就会出现一个现象就是频繁的数据用户名和密码,这样就是一件繁琐的操作,如何解决呢?没错使用ssh的方式来进行连接。

    SSH架构: Struts2 + Spring + Hibernate。我们说得是ssh协议。

16.1 什么是SSH协议

  • SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。
  • 使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、Pop、甚至为PPP提供一个安全的"通道"。
  • 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
  • 最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。

16.2 创建SSH密钥

  • Git-bash中已经集成了ssh功能,所以我们只需要简单的命令,即可生成密钥:

    命令: ssh-keygen -t rsa

    一路回车向下走,不要输入任何内容即可!

    ssh-keygen -t rsa 一路三个回车

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1prv9xkK-1605437019925)(assets/clip_image113.jpg)]

  • 执行命令完成后, 在C:\Users\Administrator\.ssh下面生成如下名称的公钥和私钥:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n5GeXmFG-1605437019927)(assets/1573294004878.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qyPR7DAb-1605437019928)(assets/1552012491019.png)] 

  • 具体步骤如下:

    第一步: 打开命令工具"git bash here" 输入命令 “ssh-keygen -t rsa” 生成密钥和公钥

    ssh-keygen -t rsa
    

    第二步: 然后将C:\Users\Administrator\.ssh生成的公钥文件【id_rsa.pub】内容复制出来

    第三步:

    • 打开gitee官网–【登录】–【设置】-【SSH公钥】选项如下图:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HQumi6nr-1605437019930)(assets/1573295254445.png)]

    • 打开github官网–【登录】–【settings】-【SSH and GPG keys】选项如下图:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gcBhnYZG-1605437019931)(assets/1573295578961.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zoXynXoh-1605437019932)(assets/1573295703584.png)]

    第四步: 测试和体验ssh的免密操作

    • 添加远程仓库和本地仓库的关联:(origin 是默认的远程版本库名称)

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6bV6bF7L-1605437019935)(assets/1573289084106.png)]

      # github
      git remote add origin [email protected]:lixiaohua1/gitdemo.git
      
      # 码云
      git remote add origin2 [email protected]:leesiuwah/gitdemo.git
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bER4Q3uS-1605437019940)(assets/1573313341064.png)]

      提示:如果你想更换远程仓库的地址:

      git remote rm origin      #删除原来的origin
      git remote rm origin2     #删除原来的origin2
        
      # 然后在执行
      git remote add origin 你需要更换的远程仓库地址
      
    • 提交代码到远程仓库中:

      git push origin master
      git push origin2 master
      
    • 克隆远程仓库到本机:

      # github
      git clone [email protected]:lixiaohua1/gitdemo.git
      
      # 码云
      git clone [email protected]:leesiuwah/gitdemo.git
      

      注意:新克隆下来的远程仓库访问名称默认为 origin

    • 拉取最新代码到本机

      git pull origin master
      

      注意:记得将https地址更换ssh地址。

1)使用ssh-keygen生成公私钥

2)把公钥设置到github或者码云

17、分支管理:合并分支、切换分支

分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JE9JEFqT-1605437019945)(assets/1571989886482.png)]

文件提交的过程:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1N9ozoSU-1605437019947)(assets/1551862269717.png)]

新建分支与切换分支:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NKgmxNdV-1605437019950)(assets/1551862657349.png)]

合并分支:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qu1Tm19C-1605437019952)(assets/1551863332557.png)]

  • 第一步:创建分支

    git branch dev   创建分支 dev
    git checkout dev  选中当前分支  dev
    
    # 注:上面两个命令可以组合成一个复合命令
    git checkout -b dev
    # git checkout -b dev  = (git branch dev +  git checkout dev)
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TbBE1KJb-1605437019953)(assets/1573315324231.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lBSOcXvf-1605437019955)(assets/1573315417906.png)]

  • 第二步:查看分支

    git branch
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yhw75xVi-1605437019956)(assets/1573315498108.png)]

  • 第三步:添加文件,提交文件在当前分支

    # 创建文件,输入任意内容
    vim e.txt
    # 提交e.txt文件
    git add .
    # 提交e.txt文件到dev分支中
    git commit -m 'e.txt'
    
  • 第四步:推送分支到远程仓库中

    git push origin dev
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kfoV2i7d-1605437019958)(assets/1573315908217.png)] 

  • 第五步:合并分支

    # 切换回master分支
    git checkout master
    # 将dev下面的内容全部合并到master
    git merge dev
    
    git push -u origin2 master  把本地分支推送到远程
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UyCpFpJK-1605437019959)(assets/1573316053364.png)]

  • 第六步:删除分支

    git branch -d dev    			删除本地分支
    git push origin2 --delete dev	删除远程分支
    

小结

  1. 如何查看分支? 创建分支
    git branch
    git branch dev
  2. 如何切换分支?
    git checkout dev
  3. 如何合并分支?
    git merge 分支名称 (注意:不能处在被合并的分支下)

第四部分: 客户端TortoiseGit

18、客户端小乌龟:安装与中文包

目标:掌握客户端的安装

18.1 安装客户端小乌龟

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qexrPdby-1605437019960)(assets/1573316488517.png)] 

一路“Next”使用默认选项即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6brNPj61-1605437019962)(assets/1573316562626.png)] 

默认选项下会启动配置画面:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2XIXpxlh-1605437019963)(assets/1573317005900.png)]

由于目前只有英文语言包,默认即可继续下一步。

配置git.exe,在4.2.1中已经安装过git-for-windows了所以在此找到git.exe所在的目录。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1JrveYZJ-1605437019964)(assets/1573316635345.png)] 

配置开发者姓名及邮箱,每次提交代码时都会把此信息包含到提交的信息中。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aM2pEPsY-1605437019966)(assets/1573316873671.png)]

使用默认配置,点击“完成”按钮完成配置。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tqQ7KSLG-1605437019967)(assets/1573316924437.png)]

完整完毕后在系统右键菜单中会出现git的菜单项。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EenDU1aC-1605437019968)(assets/1573317073016.png)] 

18.2 安装小乌龟中文包

安装中文语言包并不是必选项。可以根据个人情况来选择安装。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jcPVKeQj-1605437019969)(assets/1571736676125.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mJpOnNSE-1605437019970)(assets/clip_image260.jpg)]

直接“下一步”完整完毕。

鼠标右键选择Settings

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2H7XGtQ6-1605437019972)(assets/clip_image262.jpg)]

语言包安装完毕后可以在TortoiseGit的设置中调整语言

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jT5xpTKD-1605437019973)(assets/clip_image264.jpg)]

19、客户端小乌龟:基本使用

19.1 创建本地仓库

我们新建一个空的文件夹:tortoise

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YNgSOpLY-1605437019974)(assets/clip_image266.jpg)]

然后进入tortoise目录,右键操作:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0cSuoPj6-1605437019975)(assets/clip_image268.jpg)]

弹出提示,不要勾选:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5sAX5KRm-1605437019976)(assets/clip_image270.jpg)]

查看目录,发现生成.git文件夹:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bTV31xy9-1605437019978)(assets/clip_image272.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wlz8cKXY-1605437019979)(assets/1573347822882.png)] 

注意: 想看到对应的图标,电脑需要重启。

19.2 添加文件并提交

创建新的文件:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1jiPebYD-1605437019980)(assets/clip_image274.jpg)]

编写内容:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KklSmCy7-1605437019981)(assets/clip_image276.jpg)]

在文件夹中右键操作:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-10LEoqKr-1605437019983)(assets/clip_image278.jpg)] 

提示:这一步等同于我们的 git add readme.txt [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VjU2N6C3-1605437019984)(assets/clip_image280.jpg)] 

此时直接点击提交,即可完成:git commit 操作: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wnfA7Cdr-1605437019985)(assets/clip_image282.jpg)]

提示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2bo7z7bX-1605437019986)(assets/clip_image284.jpg)] 

19.3 差异对比

修改readme.txt:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vatgs3jk-1605437019987)(assets/clip_image286.jpg)] 

右键操作:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-85x3KxqA-1605437019989)(assets/clip_image288.jpg)] 

结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fDzvP079-1605437019991)(assets/clip_image290.jpg)] 

19.4 提交修改

直接在文件上选择右键,提交即可:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ub72gxd3-1605437019992)(assets/clip_image292.jpg)] 

19.5 查看提交日志

选中文件,右键菜单中,选中查看日志:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SerxA0zi-1605437019994)(assets/clip_image294.jpg)] 

提交的日志信息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M06nRd8a-1605437019995)(assets/clip_image296.jpg)] 

19.6 版本回退

现在我们再次修改readme.txt,并且提交

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E7Zi8cvb-1605437019997)(assets/clip_image298.jpg)] 

查看日志:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SY0Vo1VO-1605437019998)(assets/clip_image300.jpg)] 

假如我们要回到上一个版本,也就是第2次提交。

我们选中第2次提交,然后右键,选中:重置“master”到这个版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-20DmcWAC-1605437020000)(assets/clip_image302.jpg)] 

弹出菜单,这里选中Hard模式,然后确定:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6P0q2bsB-1605437020002)(assets/clip_image304.jpg)] 

再次查看日志,只剩下第1和第2次提交了。并且HEAD已经设置到了第2次提交位置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dwfxierZ-1605437020004)(assets/clip_image306.jpg)] 

文件也回滚了:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JGntOfCb-1605437020005)(assets/clip_image308.jpg)] 

如果我现在后悔了,想再次回到第3次提交怎么办?现在连日志都没有了!

此时,在空白处点击右键,选中 显示引用记录:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-42JzDjr8-1605437020006)(assets/clip_image310.jpg)] 

弹出所有操作的日志信息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LXjqBFH7-1605437020007)(assets/clip_image312.jpg)] 

现在,我们找到第3次提交,右键,选中:重置“master”到这个版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ILX9jNbd-1605437020009)(assets/clip_image314.jpg)] 

结果,第3次提交又回来了!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jRgOweE3-1605437020010)(assets/clip_image316.jpg)] 

文件内容回来了:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0tkVAcHQ-1605437020011)(assets/clip_image318.jpg)] 

19.7 撤销修改

我们现在修改文件:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bB6yoNNC-1605437020012)(assets/clip_image320.jpg)] 

现在后悔了,想要还原到修改以前。

我们可以选中文件,右键。然后选中菜单:还原。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mevyGBhN-1605437020013)(assets/clip_image322.jpg)] 

点击确定:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xJjB15hL-1605437020014)(assets/clip_image324.jpg)] 

还原成功:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qVMad2fn-1605437020015)(assets/clip_image326.jpg)] 

查看文件:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tAlWIxKC-1605437020017)(assets/clip_image328.jpg)] 

第五部分:Idea操作Git【重点】

20、Idea:配置Git

在Idea中配置Git,打开File菜单:

在File --> Settings -> Version Control --> Git -->Path to Git executable选择你的git安装后的git.exe文件

  • 方式一

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q9hav2PC-1605437020018)(assets/1571913145490.png)]

  • 方式二

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SksuSdrK-1605437020019)(assets/1571913325967.png)]

配置本地安装的Git:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gWvSuIEO-1605437020020)(assets/1573349918013.png)]

21、Idea:创建本地仓库

  • 新建一个maven工程

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gT7hF3Ce-1605437020021)(assets/clip_image436.jpg)] 

    编写简单的代码:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kJopseLw-1605437020022)(assets/clip_image438.jpg)] 

  • 创建Git本地仓库

    VCS菜单: VCS --> Import into Version Control --> Create Git Repository…

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HooljY5L-1605437020024)(assets/clip_image440.jpg)]

    在弹框中选中项目所在的位置,点击OK,此时项目文件全部变成棕色

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cCbuHLRK-1605437020025)(assets/clip_image442.jpg)] 

    项目Git版本已经创建成功。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NCpBdOmm-1605437020027)(assets/clip_image444.jpg)] 

22、Idea:忽略文件

这里可以手动修改.gitignore文件,也可以通过插件过滤。我们手动修改:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZRclQclw-1605437020028)(assets/1574323939391.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fi5ywMal-1605437020029)(assets/1574324280517.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DEj1tRb5-1605437020031)(assets/image-20200706010101775.png)]


# 官方忽略
# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

# 新增
.classpath
.project
.settings
target

# idea
*.iml
.idea

23、Idea:提交代码

23.1 添加到暂存区

项目右键选择Git --> add

此时项目文件变成绿色,此时文件只是处于暂存区,并没有真正进入到版本库中。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wv0n1xbY-1605437020032)(assets/clip_image448.jpg)] 

此时项目文件全部变成绿色

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v4EVxvGW-1605437020034)(assets/clip_image450.jpg)] 

23.1 提交至本地仓库

项目右键Git --> Commit Directory

在弹窗中输入Commit Message,点击commit,此时项目文件从暂存区真正进入版本库中,项目文件变成黑色

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8MmrBQe2-1605437020035)(assets/clip_image452.jpg)] 

编辑本次提交备注信息,然后点击commit按钮。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LAEvPtuj-1605437020037)(assets/clip_image454.jpg)] 

此时项目文件全部变成黑色

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AtiMSZD2-1605437020039)(assets/clip_image456.jpg)]

24、Idea:提交远程仓库

24.1 新建一个远程仓库

  • 在远程仓库创建新项目

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pwvk9MBc-1605437020040)(assets/clip_image458.jpg)]

  • 记录地址

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dBC7QFu3-1605437020042)(assets/clip_image460.jpg)]

24.2 推送到远程仓库

  • 右键菜单 —> Git --> Repository --> Push,然后填写远程仓库地址。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s55rcqXw-1605437020043)(assets/clip_image462.jpg)]

  • 复制远程仓库的地址,并填写

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I62OGycW-1605437020045)(assets/clip_image464.jpg)]

  • 选择远程分支的名称,点击Push:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9KVkMF3H-1605437020046)(assets/clip_image466.jpg)] 

  • 推送成功, 在Idea右下角弹出提示框

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XC62UQOG-1605437020047)(assets/clip_image468.jpg)] 

  • 查看远程仓库,推送成功。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RIpqJ9nO-1605437020048)(assets/clip_image470.jpg)]

24.3 拉取远程仓库

  • 在远程仓库随意修改代码

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-55nShyeb-1605437020049)(assets/clip_image472.jpg)]

  • 在项目中,拉取代码

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OMtyut79-1605437020051)(assets/clip_image474.jpg)]

  • 点击Pull

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dbzdjPip-1605437020052)(assets/clip_image476.jpg)] 

  • 代码成功同步

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCsajzte-1605437020053)(assets/clip_image478.jpg)] 

25、Idea:克隆项目

25.1 Idea项目断开Git关联

  • 打开Settings…

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TaIN4IbC-1605437020054)(assets/clip_image480.jpg)] 

  • 断开idea与Git版本仓库的关联:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wkSAaIVZ-1605437020055)(assets/clip_image482.jpg)]

    Idea和项目Git版本控制断开关联。

25.2 克隆远程仓库并导入Idea

克隆项目,关键地方,指定远程仓库路径、项目路径、项目名称:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9HWrKjCe-1605437020056)(assets/image-20200707151646437.png)]

  • 打开Idea: 点击 Check out form Version Control,选中Git

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SkuhtX1M-1605437020057)(assets/clip_image484.jpg)] 

  • 填入远程仓库SSH地址,输入你的远程仓库地址,点击Test,测试一下地址是否正确。点击Clone

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AnQKnBpu-1605437020058)(assets/1573354374077.png)]

  • 点击YES,Clone出远程仓储的工程,并且导入到idea中。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AI1HCmVg-1605437020059)(assets/clip_image488.jpg)] 

  • 选择maven导入方式,直到操作完成。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WIo0ozeY-1605437020060)(assets/clip_image490.jpg)] 

  • 右键Git,可以与远程仓库进行push和pull代码操作了。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cxBYVfCC-1605437020061)(assets/clip_image492.jpg)] 

26、Idea:解决冲突

什么情况产生冲突?

|-- 同一个文件 User.java

|-- 同一行 第56行

|-- 出现了不同的代码,就会产生冲突

​ A. 小明 在User.java 第56行写了代码:9999999999, 提交了代码

​ B. 小丽 在User.java第56行写了代码: 66666666666, 也提交?

26.1 制造冲突

  • 我们创建新的分支dev,并且在dev修改提交代码

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EXEtKrFL-1605437020062)(assets/1573355830861.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-levqiWuv-1605437020063)(assets/1573355020745.png)] 

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LtQOXno6-1605437020064)(assets/1573355046092.png)] 

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xt9v1kLl-1605437020065)(assets/1573356011912.png)] 

    说明: 提交代码到本地仓库。

  • 然后在master修改提交代码

    • 切换到master分支

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RYAW92NI-1605437020066)(assets/1573356257610.png)] 

    • 修改GitDemo.java

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6u1TdQLk-1605437020067)(assets/1573356369295.png)]

    • 提交代码到本地仓库

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P4LhaEOq-1605437020068)(assets/1573356570175.png)]

  • 接下来尝试合并dev分支

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-svoKGx7F-1605437020069)(assets/clip_image494.jpg)] 

  • 选择要合并的分支

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L5AX7gb7-1605437020070)(assets/clip_image496.jpg)] 

    发现合并失败,此时文件有红色标记

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-go8NhM4n-1605437020071)(assets/clip_image498.jpg)] 

26.2 解决冲突

  • 使用右键,菜单工具:Resolve Confilcts…

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qAgEXYuw-1605437020074)(assets/clip_image500.jpg)] 

  • 点击Merge合并策略:

    • Accept Yours:保留你自己的代码
    • Accept Theirs:保留别人的代码
    • merge:人工合并 (人工把需要的代码复制粘贴到结果集result里面比较保险)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vZgmgdQn-1605437020075)(assets/clip_image502.jpg)] 

  • 弹出一个对比页面

    在Result中,手动合并完成后,点击Apply按钮,完成冲突代码合并。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c8YKJkAm-1605437020076)(assets/clip_image504.jpg)]

  • 此时文件的红色标记没了

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WCV7U31K-1605437020079)(assets/clip_image506.jpg)] 

  但是有未提交的蓝色标记。然后提交,文件变为黑色。冲突被解决!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GDSvYWey-1605437020080)(assets/clip_image508.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mMEVgJU3-1605437020082)(assets/clip_image514.jpg)]

26.3 小结

两种情况冲突:

1)在多个分支里面的代码冲突

1. 创建分支 dev
2. 第9行添加代码:1111
3. 提交推送

4. 切换到master分支
5. 第9行添加代码:2222
6. 提交推送  OK

7. 切换到master分支,merge合并分支dev,出现冲突,解决。



2)在一个分支里面的代码冲突
1. 开2个idea:  idea1、idea2
2. 第一个idea:  App第九行写下代码:11111        提交、推送    OK
2. 第二个idea:  App第九行写下代码:22222        提交没有问题,推送有问题,冲突,手动解决


27、课程总结

1)Git和SVN的区别

​ SVN是集中式版本控制,

​ Git是分布式版本控制

2)使用命令行使用Git

3)TortoiseGit使用Git

4)IDEA使用Git(重点)

​ 以上三种形式都是学习:
​ 1)创建本地仓库

​ 2)添加并提交文件

​ 3)查看日志,版本回退,代码撤销

​ 4)多人协同开发(clone、push、pull)

​ 5)冲突解决(拉取代码->解决冲突->推送代码)

git init 						初始化本地仓库
git add .						把当前目录下的所有文件添加到暂存区(后续才可以提交)
git commit -m '提交日志'		 提交并记录日志
git  diff  reamde			    查看工作区与暂存区的区别
git  status					    查看文件状态
git log --oneline               查看日志
 git reset --hard 0712188       回退版本
git  checkout -- readme.txt     撤销工作区修改
git reset HEAD readme.txt       撤销暂存区修改

git remote add origin 仓库地址   本地仓库关联远程仓库
git push -u origin master       本地仓库内容推送远程仓库
git  clone  仓库地址             克隆仓库,把远程仓库内容下载到本地(并自动初始化本地仓库)
git pull origin master          从远程仓库拉取资源到本地仓库

git branch                      查看分支
git branch dev                  创建分支
git checkout dev                选中分支
git push origin dev             推送分支到远程库
git merge                       合并分支
git branch -d dev               删除本地分支
git push origin --delete dev    删除远程仓库分支(origin是别名,表示远程仓库的地址)


bsp;

   但是有未提交的**蓝色标记**。然后提交,文件变为**黑色**。冲突被解决!

   [外链图片转存中...(img-GDSvYWey-1605437020080)]   

   [外链图片转存中...(img-mMEVgJU3-1605437020082)]    



#### 26.3 小结

两种情况冲突:

1)在多个分支里面的代码冲突

  1. 创建分支 dev

  2. 第9行添加代码:1111

  3. 提交推送

  4. 切换到master分支

  5. 第9行添加代码:2222

  6. 提交推送 OK

  7. 切换到master分支,merge合并分支dev,出现冲突,解决。

2)在一个分支里面的代码冲突

  1. 开2个idea: idea1、idea2
  2. 第一个idea: App第九行写下代码:11111 提交、推送 OK
  3. 第二个idea: App第九行写下代码:22222 提交没有问题,推送有问题,冲突,手动解决







### 27、课程总结

 

1)Git和SVN的区别

​         SVN是集中式版本控制,

​		Git是分布式版本控制

2)使用命令行使用Git

3)TortoiseGit使用Git

4)IDEA使用Git(重点)



​     以上三种形式都是学习:
​       1)创建本地仓库

​      2)添加并提交文件

​      3)查看日志,版本回退,代码撤销

​     4)多人协同开发(clone、push、pull)

​     5)冲突解决(拉取代码->解决冲突->推送代码)



```java
git init 						初始化本地仓库
git add .						把当前目录下的所有文件添加到暂存区(后续才可以提交)
git commit -m '提交日志'		 提交并记录日志
git  diff  reamde			    查看工作区与暂存区的区别
git  status					    查看文件状态
git log --oneline               查看日志
 git reset --hard 0712188       回退版本
git  checkout -- readme.txt     撤销工作区修改
git reset HEAD readme.txt       撤销暂存区修改

git remote add origin 仓库地址   本地仓库关联远程仓库
git push -u origin master       本地仓库内容推送远程仓库
git  clone  仓库地址             克隆仓库,把远程仓库内容下载到本地(并自动初始化本地仓库)
git pull origin master          从远程仓库拉取资源到本地仓库

git branch                      查看分支
git branch dev                  创建分支
git checkout dev                选中分支
git push origin dev             推送分支到远程库
git merge                       合并分支
git branch -d dev               删除本地分支
git push origin --delete dev    删除远程仓库分支(origin是别名,表示远程仓库的地址)


你可能感兴趣的:(javase,java,git)