目录

一、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. java面试题目偏基础

    一.JAVA基础篇-概念1.简述你所知道的Linux:Linux起源于1991年,1995年流行起来的免费操作系统,目前, Linux是主流的服务器操作系统, 广泛应用于互联网.云计算.智能手机(An ...

  2. Python | 迭代器与zip的一些细节

    首先抛出一个困扰本人许久的问题: nums = [1,2,3,4,5,6] numsIter = iter(nums) for _ in zip(*[numsIter]*3): print(_) pr ...

  3. 作为Java技术面试官,我如何深挖候选人的技能

    作为Java资深技术面试官,首先我感觉有必要讲解"面试官深挖问题"的动机,在了解动机的前提下,大家才能更好地准备面试.面试官为什么要在一个点上深挖?两大目的.   1 首先是通过深 ...

  4. javaSE高级篇1 — 异常与多线程基础

    1.异常的体系结构  注:Throwable是一个类,不是一个接口,这个类里面是描述的一些Error和Exception的共性,如图所示: 异常 / 错误是什么意思? 定义:指的是程序运行过程中,可能 ...

  5. 学习Java的第四天

    一.今日收获 1.java完全手册的第一章 2.   1.6节了解了怎么样用记事本开发java程序 与用Eclipse开发 2.完成了对应例题 二.今日难题 1.一些用法容易与c++的混淆 2.语句还 ...

  6. 【Penetration】红日靶场(一)

    nmap探查存活主机 nmap -sP 10.10.2.0/24 图片: https://uploader.shimo.im/f/cfuQ653BEvyA42FR.png!thumbnail?acce ...

  7. 03-Collection用例管理及批量执行

    当我们对一个或多个系统中的很多用例进行维护时,首先想到的就是对用例进行分类管理,同时还希望对这批用例做回归测试 .在postman也提供了这样一个功能,就是Collection .通过这个Collec ...

  8. 【Services】【Web】【apr】安装apr

    1. 基础: 1.1 描述:apr全称Apache Portable Runtime,常用于与ssl相关的环境支持,比如openssl,httpd,nginx,tomcat 1.2 链接: 官方网站: ...

  9. 【力扣】122. 买卖股票的最佳时机 II

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必须在再次 ...

  10. 莫烦python教程学习笔记——使用鸢尾花数据集

    # View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...