git
git 是一个开源的分布式版本控制系统,用于敏捷高效的处理任何大小的项目。
git是linux torvalds 为了帮助管理linux内核开发的一个开放源码的版本控制软件。
git与常用的版本控制工具,cvs,svn等不同,它采用了分布式版本库的方式,不必服务器端软件支持

git 和svn的区别

1、git是分布式,svn不是
2、git把内容按元数据方式存储,而svn是按文件
3、git分支和svn的分支不同
4、git没有一个全局的版本号,而svn有
5、git的内容完整性要优于svn

安装

暂存区
仓库
工作空间
工作树

工作区----通过git add---暂存区---git commit提交----版本库

签入 checkin
签出 checkout
提交 commit
冲突 conflict
合并 merge
分支 branch 默认的分支叫master

常见的版本控制器:
git
svn
cvs
tfs
vss

git的优点和缺点

优点: 1、适合分布式开发,强调个体
2、公共服务器压力和数据量都不会太大。
3、速度快,灵活
4、任意两个开发者之间可以很容易的解决冲突
5、离线工作

缺点:
1.模式上比svn更复杂
2.不符合常规思维
3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有的代码和版本信息。

github是一个远程仓库;
目前流行:github

git操作手册

一、git的设置

——进入git界面(选择git bash):进入时,显示默认进入home目录
选择git bash的原因:可以使用linux命令来进行git的操作

——进入E盘,并在E盘创建一个zoe目录做练习
Cd /e
Mkdir zoe

——进入zoe目录,并在zoe目录下创建版本库,创建好的版本库会在zoe目录下产生一个隐藏文件夹,此文件夹即版本库;
Cd zoe
Git init

——进行用户设置(没有弹出任何提示则为设置成功)
Git config user.name “chentiantian”
Git config user.email “v7487501@163.com”

git config --local --list

二、git的使用
——创建一个文件aa,并编辑,用于练习使用git文件版本管理
Touch aa
Vim aa
Cat aa

(注:用cat命令查看我输入了多少行数据,共三行)
——开始添加至缓存区
Git add aa

(注:第一次添加报错,是提示bash命名和cmd命令有冲突,但并不妨碍我们进行添加,此时我们再提交一次git add命令即可)---
——用git stauts 查看aa文件的状态
Git status

(注:可以看到提示,有新文件(new files)添加了,但是没有提交(not commit yet))
——把aa文件进行提交至我们创建的版本库
Git commit -m aa

(注:提示我们提交成功,1个文件已改变,新增三行数据,此时aa文件已提交到版本库)
(注2:git add命令仅把文件添加到缓存,但并未实际提交到版本库)
(注3:git commit命令会把在缓存区的所有文件提交到版本库);
关系如图:
——提交完成后,我们回头看看aa文件的状态

(注:这里提示我们,本地文件夹和版本库的aa文件是一致的,不需要提交,工作树是干净的)

git与github的连接
Github介绍:https://github.com/

(注:github像一个程序代码图书馆,很多程序员把他们写的代码上传到github,公开并供别人下载,我们的操作就是连接好后,把自己写的文档上传至自己的github上)
——先进行注册在hub上的账户;

——注册完毕后登录;建立个人的存储库

——在我的存储库下建立一个新的存储库:

——填写资料,填完后,告诉我们创建成功:

——返回我的存储库,看新建的存储的url

(注:这就是我们的存储库url(git@github.com:dayday001/-sir-.git),通过url我们可以让我们的git连接到我们的版本库)
——在git上获取密钥
Ssh-keygen (输入后连按三次回车)(箭头指向为密钥在所在路径)

——去对应路径下找到密钥,用记事本打开

——进入github添加我们的密钥


以上git与github的连接就成功了

git与github之间互传文件
——将git与github上前面新创建的存储库连接(我的url:git@github.com:dayday001/-sir-.git)
Git remote add origin git@github.com:dayday001/-sir-.git

——将提交的aa文件上传至github
Git push -u origin master

此时github上面已有我们上传的文件

——拉取github上的文件
git pull origin master

——下载整个存储库(可以复制自己的,也可以复制别人的公开存储库,复制自己的其实和git pull命令差不多作用,在这里演示如何下载别人的存储库下来)
返回到E盘 cd ..

在github上随便找个别人的存储库
复制别人存储库url


使用命令: git clone 别人的url
Git clone git@github.com:TheAlgorithms/Python.git

可以看到E盘已经下载到了我在github上随便找到的存储库文件夹

版本回退与撤销:
——版本回退(类似于word文档编辑后的撤销操作,但版本回退命令是回退commit后版本库)
首先我们对aa进行编辑,新增几行数据(aaa bbb ccc)
wqwq:
添加到缓存库,并提交至版本库

假设现在突然发现插的三行的写错了,需要变回原样,用版本回退命令:
Git reset --hard head^

可以看到插入的三行已消失
——撤销修改(和版本回退有所不同,撤销修改撤销的是在缓存区的修改后文件)
首先对aa文件编辑,插入 xxx yyy zzz三行,并添加到缓存区,但不提交

这个时候缓存区的aa和版本库的aa有差别(因为我没有commit) ,差了三行,我们可以用命令来查看
Git status

我们看下差异在哪里:
Git diff HEAD

+表示增加
-表示删除

现在撤销掉xxx yyy zzz这三行:
Git reset HEAD aa

再看文件状态:git status aa

(添加后,modifed是绿色的,现在我们已经撤销修改,modified变成了红色,表示我们的本地库aa文件已经修改,但是没有添加到缓存)
分支管理:
——查看当前分支:git branch

——创建并切换到一条分支:git checkout -b xiaosir

——我们在xiaosir分支下对aa文件进行修改(增加ppp qqq rrr),git

——我们在master分支下查看 aa文件,可以看到master没有刚刚添加的内容:
Git checkout master

(注:这充分解释了:分支即工作线,即如果你在一条工作线进行文档修改编辑工作,那是不会影响到另一条工作线的,其中,一般以master为主分支)
——把xiaosir分支的修改结果合并到master分支上;
Git merge xiaosir (注:需要在master分支下进行操作)


——合并分支过程产生的冲突:
上面的步骤只是单独对一条分支进行修改并合并,但是在两条分支修改并合并的时候,会有冲突产生;
在xiaosir分支下修改编辑:git checkout xiaosir;

在xiaosir分支下添加并提交:

切换至master再进行修改并添加提交:
此时,我们知道,我们在xiaosir分支增加了一行文字,master分支也增加一行文字(文字内容与xiaosir分支上的不同),也就是我们在不同分支上做了不同修改,现在我们对这个操作进行合并:
Git merge xiaosir (该命令在master分支下操作)

现在来看合并的结果:

可以看到,内容有合并,但是用<<<<<<< ========== >>>>>>>>>分隔符分开了;
Git status 命令也告诉我们冲突了

——合并冲突修复:
Git add aa
Git commit -m “conflict fixed”

多测师_肖sir_git _004(版本控制器)的更多相关文章

  1. 多测师_肖sir_性能测试之性能测试了解001(jmeter)

    一.了解jmeter 1.Jmeter的概念? JMeter是Apache组织开发的基于Java的压力测试工具.具有开源免费.框架灵活.多平台支持等优势.除了压力测试外,JMeter在接口测试方面也有 ...

  2. 多测师_肖sir _python 练习题(一)100以内奇数,偶数,质数胡计算

    (1)求1~100的和方法: 方法一:print(sum(range(1,101))) 方法二: sum1 = 0 i = 1 while True: sum1 = sum1 + i if i == ...

  3. 多测师_讲解python__004 函数

    # 函数:一个工具,随调随用# 降级代码冗余## 增加代码的复用性,提高开发效率,为了不成为cv战士## 提高程序扩展性## 函数有两个阶段:定义阶段,调用阶段.## 定义时:只检查函数体内代码语法, ...

  4. 多测师_高级讲师肖sir讲解html中 Button跳转连接方法归纳

    第一种方法: 1.1<a href="http://www.baidu.com">   <input type="button" name=& ...

  5. 多测师_高级肖sir分享pycharm中设置主题和设置代码颜色方法

    一.修改pycharm中的主题颜色 二.修改代码颜色 File-->Settings-->Editor--> Color Scheme-->Language Defaults- ...

  6. 多测师_测试理轮_002(v模型和H模型)

    为什么要测试?1.软件非正常运行或自身缺陷会引发问题2.代码和文档是人写的,难免会出错3.环境原因影响软件(内存不足,存储,数据库溢出等)4.软件测试活动是保证软件质量的关键之一 什么是测试?软件行业 ...

  7. 多测师浅谈 学员实现价值就是我们的幸福_高级讲师肖sir

    学员实现价值就是我们的幸福 作为一名资深的IT高级讲师,在传统的行业IT薪资基本都是过万,作为一名IT培训教师,培养出在不同领域的测试,并且接触各种各样的产品,目前市场流行的比如银行业务系统,语音类系 ...

  8. 多测师讲解python_os模块_高级讲师肖sir

    #os.path.isfile()#:判断当前是否为文件,返回布尔值是文件则True否者Falsea_path='F:\cms搭建.rar' #lesson包b_path=r'D:\bao\kk '# ...

  9. 多测师讲解自动化--rf断言(下)--_高级讲师肖sir

    1.Page Should Contain 1.1存在页面上的内容 1.2 不存在页面上的内容, 运行抛异常 1.3 Page Should Not Contain 1.4 1.5 输入页面元素,判断 ...

随机推荐

  1. 区块链Fabric 交易流程

    1. 提交交易预案 1)应用端首先构建交易的预案,预案的作用是调用通道中的链码来读取或者写入账本的数据.应用端使用 Fabric 的 SDK 打包交易预案,并使用用户的私钥对预案进行签名. 应用打包完 ...

  2. docker push出现denied: requested access to the resource is denied

    今天想再 把本地的docker image 镜像push 到: https://hub.docker.com/ Step1: login : https://hub.docker.com/ [root ...

  3. Redis源码笔记--服务器日志和函数可变参数处理server.c

    前言 Redis源码中定义了几个和日志相关的函数,用于将不同级别的信息打印到不同的位置(日志文件或标准输出,取决于配置文件的设置),这些函数的定义位于 server.h 和server.c 文件中,包 ...

  4. Node.js连接MongoDB数据库

    首先要启动MongoDB服务器 先找到你的mongoDb安装目录,我的如下:就在bin文件夹下创建一个data文件夹,data内包含两个空文件夹,如下: 接着回到bin文件夹处,按住shift键,右击 ...

  5. SpringCloud实战 | 第四篇:SpringCloud整合Gateway实现API网关

    一. 前言 微服务实战系列是基于开源微服务项目 有来商城youlai-mall 版本升级为背景来开展的,本篇则是讲述API网关使用Gateway替代Zuul,有兴趣的朋友可以进去给个star,非常感谢 ...

  6. HTTP 【值得你看个究竟】

    我是一名程序员,我的主要编程语言是 Python,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟.醍醐灌顶的感觉. 认识 ...

  7. TB级倾斜模型加载速度太慢?这是我见过最快的加载方式没有之一

    随着无人机性能快速提升,单个项目涉及到的倾斜摄影模型数据范围.数据量及单个模型体积也在不断变大,带来的问题是数据显示速度却越来越慢,那么如何在不升级配置的情况下提升模型的加载速度呢?   TB级倾斜摄 ...

  8. 关于python中break与continue的区别

    在python中break和continue都有跳出循环体的作用,但是他们还是有一些区别的,具体区别如下: break:是直接跳出循环,跳出自己所处的整个循环体 continue:只是跳出本次循环,而 ...

  9. Shell学习(一)认识Shell

    一.啥是Shell Shell : 一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell脚本 :  一种为 shell 编写的 ...

  10. 面经手册 · 第12篇《面试官,ThreadLocal 你要这么问,我就挂了!》

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 说到底,你真的会造火箭吗? 常说面试造火箭,入职拧螺丝.但你真的有造火箭的本事吗,大 ...