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. SpringMVC-Controller&RestFul

    Controller与RestFul 目录 Controller与RestFul 1. Controller 1. 控制器Controller 2. 利用接口定义控制器 1. 实现Controller ...

  2. JS基础回顾_函数

    函数 不要使用C风格的大括号 // log function return1() { return { name: 'oceans', } } function return2() { return ...

  3. 最全 IT 相关网站,软件开发网站收集

    前端比较流行的 UI 框架 目前前端用的比较多的框架有如下几个 Ant Design:Ant Design - 一套企业级 UI 设计语言和 React 组件库  Mint UI:https://mi ...

  4. elo system

    今天了解了一下游戏中的PVP模块的实现,大多数的游戏都使用到了ELO算法,刚开始的时候并不清楚这个算法是做什么的,对此开始大量查找有关于ELO算法的资源,功夫不负有心人,总算找到一些有用的资源了. 先 ...

  5. oracle之三rman 不完全恢复

    rman 不完全恢复 9.1 rman 不完全恢复的三个标准模式:基于time.基于scn和基于sequence: 范例1:恢复过去某个时间点误操作,一般使用基于time或scn. 1)环境:有一套全 ...

  6. oracle之三rman 备份

    rman 备份 7.1 归档方式下rman备份常用语法: 7.1.1 backup 备份 1)备份全库:1.1 RMAN> backup database format='/u01/myrman ...

  7. python中实现参数化的原理

    k就是   <参数名>

  8. 轻松上手SpringBoot Security + JWT Hello World示例

    前言 在本教程中,我们将开发一个Spring Boot应用程序,该应用程序使用JWT身份验证来保护公开的REST API.在此示例中,我们将使用硬编码的用户和密码进行用户身份验证. 在下一个教程中,我 ...

  9. [程序员代码面试指南]递归和动态规划-换钱的最少货币数(DP,完全背包)

    题目描述 给定arr,arr中所有的值都为正数且不重复.每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim,求组成aim的最少货币数. 解题思路 dp[i][j]表示只用第0 ...

  10. js动画之轮播图

    一. 使用Css3动画实现 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...