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. ZT:15 个你非了解不可的 Linux 特殊字符

    https://os.51cto.com/art/202003/611595.htm 不知道大家接触 Linux 系统有多久了,可曾了解过 Linux 中有哪些特殊的字符呢?其实啊,那些特殊字符都大有 ...

  2. Istio 运维实战系列(1):应用容器对 Envoy Sidecar 的启动依赖问题

    本系列文章将介绍用户从 Spring Cloud,Dubbo 等传统微服务框架迁移到 Istio 服务网格时的一些经验,以及在使用 Istio 过程中可能遇到的一些常见问题的解决方法. 故障现象 该问 ...

  3. leetcode刷题-74搜索二维矩阵

    题目 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列.每行的第一个整数大于前一行的最后一个整数.示例 1: 输入:matrix ...

  4. vueJs 安装

    1.下载nodeJs 可前往 https://www.cnblogs.com/takeyblogs/p/13600124.html 这里下载 2.由于 npm 安装速度慢,本教程使用了淘宝的镜像及其命 ...

  5. 业务级别MySQL

    业务级别MySQL 目录 业务级别MySQL 1. 权限管理和备份 1. 用户管理 1. SQLyog可视化操作 2. SQL命令操作 2. MySQL备份 3. 规范数据库设计 1. 为什么需要设计 ...

  6. pytest测试框架 -- setup和teardown等

    一.用例运行级别 1.函数级别(setup.teardown 或 setup_function.teardown_function): 仅对处于同作用域的测试函数有效(该函数定义不在类中,则对非类中测 ...

  7. oracle之三手工不完全恢复

    手工不完全恢复 4.1 不完全恢复的特点: 1)让整个database 回到过去某个时间点,不能避免数据丢失. 2)想跳过坏日志而继续恢复所有其他工作是不可能的,前滚没有这个功能(考点). 3)必须以 ...

  8. Python3 学习笔记之 数据类型

  9. 第3课 - 启航Lua之路

    第3课 - 启航Lua之路 1. Lua中的变量 (1)变量:全局变量和局部变量 — Lua中支持全局变量和局部变量的概念 全局变量:直接定义变量名,并复制 a = 1;   -- 用 ; 结束当前语 ...

  10. Linux下用户的创建与删除

    我们在Linux下创建用户主要有两种方式:adduser和useradd,它们的区别以及主要用法如下: adduser adduser的用法很简单,只需adduser+username即可,如下: s ...