版本控制系统git和svn

目录

零、以前Git的学习

一、版本控制系统的综述

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

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

  3、SVN和Git的存储方式和回退方法

二、分布式的版本控制系统---Git

  1、基本概念介绍

  2、Git基本命令

    1)设置用户名和邮箱、本地仓库的初始化操作

    2)将工作区的文件提交到本地暂存区和本地库---git add 和git commit命令

    3)查看历史记录---git log、git reflog

    4)回退到哪个版本---使用git reset --hard命令

    5)删除操作---rm命令、找回本地删除的文件(即执行回退到哪个版本---使用git reset命令)

  3、分支

    1)分支的概念

    2)查看分支

    3)创建、切换分支

    4)合并branch01分支到master分支以及出现了合并冲突的解决方法

三、远程库的操作GitHub

  1、本地库(Git)和远程库(GitHub库)的准备

  2、将本地库中的内容推送到远程库 ----操作人员A

  3、克隆操作---操作人员B

  4、开发人员Bpush到开发人员A创建的远程库中去

  5、创建远程版本库的人员A邀请开发人员B到开发团队中的方法,邀请以后,开发人员B在push的时候登录自己的GitHub账户即可推送到A创建的远程库中去

  6、开发人员A从A创建的远程库中拉取B做的修改---方法一:先使用fetch后使用merge

  7、开发人员A从A创建的远程库中拉去B做的修改---方法二:直接使用pull命令

  8、开发人员A和开发人员B同时操作一个文件的同一行引发的推送冲突的问题

  9、跨公司合作

  10、免密码操作---解决每次push操作的时候都会让输入GitHub账号和密码的问题

四、SVN的使用方法

  1、SVN的安装

  2、SVN的基本操作

  3、查看日志的方法

  4、不想提交某个文件的方法

  5、SVN解决冲突方法

  6、SVN分支

一、版本控制系统的综述

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

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

  3、SVN和Git的存储方式以及回退方法

二、分布式的版本控制系统---Git

  1、基本概念介绍

a)Git的本地结构

b)分布式远程仓库

c)团队内部使用Git本地结构和远程仓库方法

d)跨公司或跨团队使用Git本地结构和远程仓库方法

2、Git基本命令

1)设置用户名和邮箱、本地仓库的初始化操作

2)将工作区的文件提交到本地暂存区和本地库---git add 和git commit命令

3)查看历史记录---git log、git reflog

a)方法一:使用git log

b)方法二:使用git log --pretty=oneline

c)方法三:使用git reflog  这样虽然索引号(第一列)短了,但是还是可以用的

4)回退到哪个版本---使用git reset --hard命令

git reset的其他参数含义(仅了解即可)

5)删除操作---rm命令、找回本地删除的文件(即执行回退到哪个版本---使用git reset命令)

3、分支

1)分支的概念

2)查看分支

 a)在工作区下创建一个Test4.txt并提交到暂存区、本地库

    

b)将Test4.txt提交到暂存区和本地库---在Test4.txt所在的目录下右键--->Git Bash Here

 

 c)查看当前分支,并创建分支branch01

 且可以看到当前branch01分支和master分支的文件对应的索引号都是161c4b7,表明branch01分支中文件的内容和master分支中文件的内容是一样的。

d)切换到分支branch01,并更改Test4.txt中的内容,注意顺序!!!否则在branch01分支下是看不到的!!!且当前分支是branch01的话,此时做的修改master也是看不到的

 然后再去更改Test4,txt中的内容:

修改内容后在branch01分支下提交到暂存区和本地库

 e)切换到master分支,并更改Test4.txt的内容

在master分支下更改Test4.txt的内容

另外:可以看到切换到master分支后,在Test4.txt中是看不到branch01分支做的修改的:

     

 然后在maser分支下保存到暂存区和本地库

f)合并master做的修改和branch01做的修改:注意必须是在master分支下做合并操作

 什么时候合并冲突?

当两个分支在同一个文件下的同一个位置做修改了,再合并,此时就会出现合并冲突,可以看到此时Test4.txt中的内容为:

解决冲突的方法:

手动删除不想要的内容,然后再添加到maser的暂存区和本地库

 三、远程库的操作GitHub

1、创建本地库、初始化等操作

a)初始化本地库

 

b)创建Demo.txt并提交到暂存区和本地库

 

 c)在GitHub中创建一个远程仓库

 

第二步:输入信息

 

 第三步:创建成功,复制地址

 

d)在Git中为该地址重新起一个名字

e)将本地库中的内容推送到远程库 m32

 登录完毕后即可传送完成:

f)克隆操作---操作人员B m33

在E盘目录下--->右键打开Git Bash Here,表示不同的人员操作

 

 复制地址,并执行如下命令:

 

 执行命令:

 开发人员Bpush到开发人员A创建的远程库中去

 之后本地文件:

  

 

 

 

 然后再使用git remotr -v 查看别名情况:

 然后开发人员B创建了新文件需要提交到开发人员A的远程库!!!

 

 

 添加到本地库、远程库

所以上面的登录GitHub信息写错了,应该是写开发人员B的GitHub账户 ,上面的origin是开发人员A GitHub账户下的一个远程库地址的一个别名,因为开发人员B是克隆A的远程库,此时会自动为A的远程库地址起别名为origin

这是由于在一台电脑上做的操作的原因,删除本地缓存即可,接下来删除缓存

 

 

 

 

 

重新添加文件Demo3.txt

 g)创建版本库的人员A邀请开发人员B加入团队方法:

登录开发人员A的GitHub账户

在弹窗中输入你要邀请的人的GitHub账户

 第n步:

 登录开发人员B的GitHub账户

 刷新完成后,接受邀请

之后再在/e/GitResp2 下打开git bash here,执行push操作:

 需要注意的是开发人员B是克隆开发人员A的远程版本库的,所以origin是开发人员A远程库地址的别名,所以需要注意的是:

git push origin master是将开发人员B的master分支推送到开发人员A创建的远程库中去,但是按下回车后会让登陆GitHub账户,此时使用开发人员B的GitHub账户信息即可将开发人员B的master分支下的文件推送到origin对应的地址上去。

6、开发人员A从A创建的远程库中拉取B做的修改---方法一:先使用fetch后使用merge

在上面开发人员B克隆了A远程库中的文件,做了修改之后又上床到了A的远程库,此时A需要更新一下自己本地的文件

a)开发人员A可以登陆到自己的GitHub账户去查看是否有文件的改动,然后执行以下步骤

b)进入A所在的本地版本库,后右键打开Git,执行fetch操作

 

 

但此时只是将A的远程库的文件抓取到了A的本地库中,A的工作区并没有远程库的文件

 

c)执行merge操作

 

 此时在A的工作区已经有了远程库中的文件

 

 需要注意的是:在合并的中间可以在Git中使用命令查看远程库中的文件,如下:

 

 

 最后再将分支切换回来

 

7、开发人员A从A创建的远程库中拉去B做的修改---方法二:直接使用pull命令

 后回车即可

 8、开发人员A和开发人员B同时操作一个文件的同一行引发的推送冲突的问题

a)开发人员A的操作---创建了一个Test.txt文件,并依次做了如下操作

 <---开发人员A的工作区

 

 

 b)开发人员B做了一个拉取操作

 

 

 

 B的工作区域

 

c)开发人员B对Test.txt的第二行做了如下操作

 

 并提交到了暂存区、本地库、A的远程库

 

 d)开发人员A此时也对Test.txt文件的第二行做了修改,此时也想提交到A的远程库中去,执行如下操作

 

 并提交到暂存区、本地库、A的远程库,但是发生了失败

 

此时A提交失败的解决方法:

A先拉取A远程库中的内容,手动解决冲突之后再推送

 

此时A的工作区文件的内容是包含了冲突信息的:

 

 

 删除后:

 之后再保存到暂存区、本地库、A的远程库

 

 

9、跨公司合作

以上假设A和B是在同一个公司1,A创建了远程GitHub仓库,现在假设C是公司2的开发人员C,现在C想要在A和B开发的代码基础上再做开发,需要执行如下步骤:

a)A发送自己团队的远程库地址给C

 b)开发人员C利用A发送给他的远程库地址执行fork操作

b1)登录C的GitHub账户

b2)刷新完成后

b3)fork完成

 C)开发人员C将C的GitHub仓库中的GitResp2中克隆下来

 d)开发人员C做的修改

 d2)执行推送操作,推送到C的GitHub账户下的仓库

e)此时C想将自己做的修改合并到A的远程库中去,方法如下:

e1)推送后,C先在自己的GitHub账户下做申请

e2)next

 

e3)next

e4)next

e5)公司1的开发人员A审核公司2的Cf发出的申请

 e6)公司1的开发人员A可以给公司2的开发人员C留言,确认是否可以合并

e7)开发人员C确认

C再次回复

 e8)A查看C做的修改,并通过C的请求

 查看做的修改

 

合并按钮

 最后

10、免密码操作---解决每次push操作的时候都会让输入GitHub账号和密码的问题

a)第一步

 

 三次回车之后即可生成一个.ssh文件夹,如下

b)用notepad++打开id_rsa.pub文件,复制里面的内容

c)进入当前用户的GitHub账号,点击settings

 d)点击SSH and GPG keys

 e)点击New SSH key 

f)粘贴刚刚复制的内容

 

 上面的Title随便起名字

g)使用远程库的ssh地址执行push操作

g1)先获取到远程库的ssh地址,并复制

g2)给ssh地址起别名,并使用该别名执行push操作

 g3)查看别名,必须查看是否成功了

 g4)创建一个Test100.txt文件,并使用ssh地址的origin_ssh执行push操作

 以上博文的撰写工作是基于b站视频的讲解下完成的,向老师表示感谢

四、SVN的使用方法

  1、SVN的安装

SVN客户端下载地址:https://tortoisesvn.net/downloads.html

同时也要下载中文语言包:

 

 

 先安装客户端,一路点击下一步即可,然后安装中文包。

安装完成后,右键即可有如下的选择:

2、SVN的基本操作

 

 

 

 

点击确定之后会让填写用户名和密码,这里的用户名和密码就是你登陆网站使用的用户名和密码

 

 

 确定之后即可检出完成

进入svn工作目录:

 

 提交方法:

 在中间的空白区域的方框中也可以添加提交描述,然后点击确定之后即可开始提交

 

 

 修改一个文件,然后提交

右键->SVN提交

 

 3、查看日志的方法

 

 注意:在使用SVN提交之前,经常使用SVN更新,以防止冲突

 4、不想提交某个文件的方法

 点击确定后:

 再次点击SVN提交,就没有SVN的图标了

 新增加的某个文件如何忽略?例如此时新建了一个test.txt

方法如下:

 

 执行完上面的操作后,也要执行一遍提交

 

 5、SVN解决冲突方法

什么时候会出现冲突?

多个人同时修改了同一个文件的同一行

解决冲突的方法

 解决冲突方法二:

 然后弹出来下图:

 关闭之后:

 二进制文件冲突修改方法:

 

 

 

 6、SVN分支

为什么要做分支?

隔离线上版本和开发版本

大功能开发,自己做的开发不想影响到别人,自己单独的做一个分支出去

SVN经典目录结构:

trunk--主干(相当于master)

branches--分支

tags--标签

 

 

 

分支即创建完成

 

但是上面的目录结构有一个问题,就是分支越来越多的话,更新就会很麻烦,于是可以单独的将branches和trunk检出出来

(1)将branches单独的拿出来

 

 

(2)将trunk单独的拿出来

 

 

(3)删除原来的文件夹---不删也行

 

 

 (4)如何将分支做的提交,合并到主干中去?

 

 

 

 

(5)如何在已有了分支的基础上,再创建一个分支

 

 

 

 

 

 

 

 

 

 如果想验证是否就是分支2,那可以双击svnbucket-onlinev1.0这个文件夹,然后右击->属性

 (6)查看仓库的结构

 

 

 教程网址:https://www.bilibili.com/video/BV1k4411m7mP?p=4&spm_id_from=pageDriver

 

posted @ 2020-11-21 15:31  兵临城下的匹夫  阅读(227)  评论(0编辑  收藏  举报
TOP