目录

一、git概念

二、git简史

三、git的安装

四、git结构

五、代码托管中心—本地库和远程库的交互方式

六、初始化本地仓库

七、git常用命令

1、add和commit命令

2、status命令

3、log命令

4、reset命令

5、hard参数、mixed参数、soft参数

6、删除文件-找回本地库删除的文件

7、找回暂存区删除的文件

8、diff命令

八、git中的分支

1、什么是分支

2、操作分支

九、github账号注册

十、初始化本地库

十一、创建远程库

十二、在本地创建远程库地址的别名

十三、推送操作

十四、克隆操作

十五、邀请加入团队,push操作

十六、远程库修改的拉取操作


一、git概念

【1】Git技术:公司必备,一定要会

【2】Git概念:

Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的项目。

【3】什么是版本控制?

版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统 。
 

【4】为什么要使用版本控制?

       软件开发中采用版本控制系统是个明智的选择。
       有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态。就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。
但额外增加的工作量却微乎其微。你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。

【5】版本控制系统的分类:

1、集中化的版本控制系统:

集中化的版本控制系统诸如CVS, SVN 以及Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法,这种做法带来了许多好处,现在,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统;要远比在各个客户端上维护本地数据库来得轻松容易。

事分两面,有好有坏。这么做最显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内, 谁都无法提交更新,也就无法协同工作。

2、分布式的版本控制系统

由于上面集中化版本控制系统的那些缺点,于是分布式版本控制系统面世了。

在这类系统中,像Git, BitKeeper 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。

更进一步,许多这类系统都可以指定和若干不同的远端代码仓库进行交互。这样,你就可以在同一个项目中分别和不同工作小组的人相互协作。

分布式的版本控制系统在管理项目时存放的不是项目版本与版本之间的差异.它存的是索引(所需磁盘空间很少所以每个客户端都可以放下整个项目的历史记录)

二、git简史

BitKeeper【1】简史:百度百科

Linux--->代码越来越多--->优化做的越来越好---->项目管理工具---->BitKeeper----->一周开发Git----->一个月之内将Linux部署到Git上---->免费、开源---->广泛应用

三、git的安装

【1】Git官网:

Git

附百度云盘下载地址:

链接:https://pan.baidu.com/s/1Y7oJK7tA3B9FS5rsWBW4oQ

提取码:ukpz

【2】安装

直接下一步

安装成功之后,在桌面点击右键选择:Git Bash Here打开终端

四、git结构

Git结构

五、代码托管中心—本地库和远程库的交互方式

【1】代码托管中心是干嘛的呢?

我们已经有了本地库,本地库可以帮我们进行版本控制,为什么还需要代码托管中心呢?

它的任务是帮我们维护远程库,

下面说一下本地库和远程库的交互方式,也分为两种:

(1)团队内部协作

(2)跨团队协作

跨团队协作

【2】托管中心种类:

局域网环境下:  可以搭建 GitLab服务器作为代码托管中心,GitLab可以自己去搭建

外网环境下:可以由GitHub或者Gitee作为代码托管中心,GitHub或者Gitee是现成的托管中心,不用自己去搭建

六、初始化本地仓库

在【Git】中的命令和Linux是一样:

【1】清屏  clear

【2】查看目录结构   ll

【3】查看安装Git的版本   git --version

【初始化本地仓库】

【1】打开Git Bash Here

【2】注册身份(签名)

设置用户名:

git  config --global user.name "jason_yu"

设置邮箱:

git config --global user.email "335816866@qq.com"

【3】使用git init命令来进行初始化工作

【4】对应目录中GitReps中生成一个.git的隐藏目录

注意事项:这个本地库中的.git目录不要随意删除或者修改,容易出问题。

七、git常用命令

1、add和commit命令

添加文件: add   提交文件:commit

【1】创建一个文件Demo.txt

【2】git add把本地工作区的代码提交到暂存区中

【3】git commit 从暂存区中提交到本地仓库中

git commit -m "这是我第一次提交的Demo.txt" Demo.txt

注意事项:

1、不放到本地仓库的文件,是不能被git管理的;

2、即使放在本地仓库的文件,git也不能直接进行管理,必须通过add、commit命令把文件提交

到本地库中,git才能进行管理。

2、status命令

git status看的是工作区和暂存区的状态

把Demo2.txt提交至暂存区

查看状态:

再次把暂存区中的文件提交至本地库中

修改Demo2.txt中的内容

查看状态:

使用git add再次提交文件到暂存区中

使用git commit提交至本地库

查看状态

3、log命令

git log 可以让我们查看提交的,显示从最近到最远的日志

当历史记录过多的时候,查看日志的时候,有分页效果,分屏效果,一页展示不下:

下一页:空格

上一页:b

显示末尾:end

退出:q

日志显示方式:

【1】方式1:git log --->分页

【2】方式2:git log --pretty=oneline

【3】方式3:git log --oneline

【4】方式4:git reflog

多了一个参数:HEAD@{数字}

数字的含义:当前HEAD指针回到指定历史版本需要走的步数。

4、reset命令

reset命令:前进或者后退历史版本

复制:在终端中选中就是复制了

粘贴: 右键:paste

5、hard参数、mixed参数、soft参数

【reset参数】

1、【hard】git reset --hard

特点:当本地库中的指针发生偏移的时候,那么暂存区会重置,而且工作区也会重置。

2、【mixed】git reset --mixed

特点:当本地库中的指针发生偏移的时候,那么暂存区会重置,而工作区不动。

3、【soft】git reset --soft

特点:当本地库中的指针发生偏移的时候,暂存区和工作区都不动。

【结论】我们工作的时候,--hard用的最多。

6、删除文件-找回本地库删除的文件

【1】创建一个文件Test.txt

【2】使用add添加到暂存区

【3】使用commit提交到本地库

【4】删除工作区的文件

【5】同步工作区和暂存区的状态

【6】查看日志

【7】找回本地库中删除的文件:实际上就是把指针指到添加的那个历史版本就可以了。

7、找回暂存区删除的文件

【1】删除工作区的文件

【2】同步暂存区的文件

使用add添加到暂存区

【3】后悔了:实际上就是把指针指到添加的那个历史版本就可以了。

8、diff命令

【1】先创建一个文件,添加到暂存区,再提交到本地库:

​ 【2】更改工作区中Test3.txt中内容,增加内容:

导致:工作区  和 暂存区  不一致,比对:

总结:   git diff [文件名]   ---》   将工作区中的文件和暂存区中文件进行比较

多个文件的比对:

总结:git diff --->比较工作区中和暂存区中 所有文件的差异

比较暂存区和本地库中差别:

git diff [历史版本][文件名]   ---》比较暂存区和本地库中内容

八、git中的分支

1、什么是分支

【1】什么是分支:

在版本控制过程中,使用多条线同时推进多个任务。这里面说的多条线,就是多个分支。

【2】通过一张图展示分支:

【3】分支的好处:

同时多个分支可以并行开发,互相不耽误,互相不影响,提高开发效率

如果有一个分支功能开发失败,直接删除这个分支就可以了,不会对其他分支产生任何影响。

2、操作分支

1)查看、创建、切换分支

【1】在工作区创建一个Test4.txt文件,然后提交到暂存区,提交到本地库:

【2】查看分支:

【3】创建分支,再查看:

【4】切换分支再查看:

2)冲突问题--如何解决冲突问题

【1】进入branch01分支,增加内容:

【2】将分支切换到master:

然后在主分支下 加入内容:

【3】再次切换到branch01分支查看:

【4】将branch01分支  合并到  主分支 :

(1)进入主分支:

(2)将branch01中的内容和主分支内容进行合并:

查看文件:出现冲突:

解决:

公司内部商议解决,或者自己决定  人为决定,留下想要的即可:

将工作区中内容添加到暂存区:

然后进行commit操作:

九、github账号注册

官网:https://github.com/

注册账号

当你创建resp库的时候会让你验证一封邮件,进入你自己的邮箱,点一下就ok!

修改头像

下一步自己尝试做一下。

十、初始化本地库

本地库和远程库的交互方式

【1】创建本地库

mkdir GitResp2

【2】初始化本地库

【3】创建一个文件Demo.txt

【4】提交至暂存区和本地库

十一、创建远程库

【1】new respository

【2】进入远程库创建页

远程库地址:https://github.com/jason1983-git/GitResp2.git

十二、在本地创建远程库地址的别名

远程库的地址:

点击进入:

远程库地址比较长,每次复制比较麻烦

https://github.com/jason1983-git/GitResp2.git

在Git本地将地址保存,通过别名

查看别名:

起别名:

十三、推送操作

推送成功以后,查看自己的远程库:

十四、克隆操作

远程库地址复制:

克隆操作:

克隆操作可以帮我们完成:

(1)初始化本地库

(2)将远程库内容完整的克隆到本地

(3)替我们创建远程库的别名:

十五、邀请加入团队,push操作

【1】更新本地库信息:

【2】push内容到远程库中去:

发现可以直接push进去,并没有让我录入账号密码,或者也没有提示错误 - --》结果 很诡异

原因:git在本地会有缓存

清除本地缓存

现在再次重新push,发现出错了:

必须要加入团队:

登录项目经理的账号,邀请普通成员:

登录被邀请者的账号,接收邀请:(在地址栏录入邀请链接即可: )

使用项目经理的账号查看远程库的状态

十六、远程库修改的拉取操作

【1】拉取操作 pull操作,相当于  fetch+merge

【2】项目经理先确认远程库内容是否更新了:

【3】项目经理进行拉取:

(1)先是抓取操作:fetch:

在抓取操作执行后,只是将远程库的内容下载到本地,但是工作区中的文件并没有更新。工作区中还是原先的内容:

抓取后可以去远程库看看内容是否正确:

然后发现内容都正确,就可以进行合并操作了:

合并之前应该将分支切换回来:

(2)进行合并:merge:

--------------------------------------------------------------------------------------------------------------------------------

远程库的拉取可以直接利用pull命令来完成:

fetch+merge操作:---》为了保险期间,慎重

pull --->代码简单,比较省事

未完待续,敬请期待... ...

git安装与使用,未完待续... ...的更多相关文章

  1. 阿里云服务器:IIS网站的架设(一、环境设置与安装IIS网站 二、网站的基本设置 三、建立新网站(未完待续))

    Windows Server 2012 R2的Internet Information Services (IIS)网站的模块化设计,可以减少被攻击面并减轻管理负担,让系统管理员更容易架设安全的具备高 ...

  2. Go web编程学习笔记——未完待续

    1. 1).GOPATH设置 先设置自己的GOPATH,可以在本机中运行$PATH进行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...

  3. javascript有用小功能总结(未完待续)

    1)javascript让页面标题滚动效果 代码如下: <title>您好,欢迎访问我的博客</title> <script type="text/javasc ...

  4. virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续)

    virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续) 第一次接触到 linux,不知道linux的确很强大,然后用virtualbox ...

  5. GitHub 入门不完全指南(未完待续)

    我一直认为 GitHub 是一座宝藏,想让更多人的知道它.加入到这个社区中.本人能力有限,如果文中出现不对的地方,欢迎指正交流. 一.前言 大家好,我是削微寒(xuē wēi hán),一个走在进阶路 ...

  6. 构建Linux根文件系统(未完待续)

          所谓制作根文件系统, 就是创建各种目录, 并且在里面创建各种文件. 比如在/bin ./sbin 目录下存放各种可执行程序, 在/etc 目录下存放配置文件, 在/lib 目录下存放库文件 ...

  7. php-安装与配置-未完待续2

    一,准备工作 在入门指引中,我们已经知道PHP的3个应用领域,不同的场景,需要安装的东西是不同的.具体如下: 服务器端脚本,在通常情况下,需要三样东西:PHP 自身.一个 web 服务器和一个 web ...

  8. ASP.NET MVC 系列随笔汇总[未完待续……]

    ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...

  9. 关于DOM的一些总结(未完待续......)

    DOM 实例1:购物车实例(数量,小计和总计的变化) 这里主要是如何获取页面元素的节点: document.getElementById("...") cocument.query ...

随机推荐

  1. Demo01无重复数字

    package 习题集2;//有1,2,3,4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?public class Demo1 { public static void main(S ...

  2. Erda 系列 Meetup「成都站」携手SOFAStack 和你聊聊云原生基础设施建设那点事儿

    技术控快上车啦秋天的第一场活动一起来收获技术干货吧! 主题: 云原生基础设施建设的现在及未来时间: 2021 年 9 月 11 日 (周六) 13:30-17:00活动地点: 四川省成都市蚂蚁 C 空 ...

  3. A Child's History of England.38

    CHAPTER 12 ENGLAND UNDER HENRY THE SECOND PART THE FIRST Henry Plantagenet, when he was but [only] t ...

  4. 【JAVA开发】浅析双亲委派机制

    双亲委派机制存在的意义 双亲委派只是一种说法,个人觉得叫单亲委派更合适,因为向上传递的父类只有一个,估计只是翻译过来的,形成的一种习惯,大家可以当做单亲委派 四种加载器都是用于类的加载,只是加载的对象 ...

  5. Win7部署Yapi

    1.安装node 下载地址:https://nodejs.org/zh-cn/download/ (win7要下载v12.16之前的版本) 安装目录在D:\nodejs,配置地址(文件目录不能有特殊符 ...

  6. Dubbo服务调用超时

    服务降级的发生,其实是由于消费者调用服务超时引起的,即从发出调用请求到获取到提供者的响应结果这个时间超出了设定的时限.默认服务调用超时时限为1秒.可以在消费者端与提供者端设置超时时限. 一.创建提供者 ...

  7. XML名命空间

    XML的名命空间就类似于java的包,命名空间定义:xmlns:***="URI",默认命名空间定义:xmlns="URI" 引号中的URl内容用来唯一标识命名 ...

  8. 团队协作项目——SVN的使用

    参考文献:https://www.cnblogs.com/rwh871212/p/6955489.html 老师接了一个新项目,需要团队共同完成开发任务,因此需要SVN.SVN是C/S架构: 1.服务 ...

  9. 微服务下前后端分离的统一认证授权服务,基于Spring Security OAuth2 + Spring Cloud Gateway实现单点登录

    1.  整体架构 在这种结构中,网关就是一个资源服务器,它负责统一授权(鉴权).路由转发.保护下游微服务. 后端微服务应用完全不用考虑权限问题,也不需要引入spring security依赖,就正常的 ...

  10. 7、Redis五大数据类型---集合(Set)

    一.集合(Set)简介 Set是string类型的无序集合.集合成员是唯一的,这就意味着集合中不能出现重复的数据. Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1). ...