zoukankan      html  css  js  c++  java
  • 版本控制系统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账号和密码的问题

    一、版本控制系统的综述

      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站视频的讲解下完成的,向老师表示感谢

  • 相关阅读:
    html <applet>元素属性介绍
    C#内存释放(转)
    mongodb for linux (安装)
    WCF客户端搭建(通过自定义WCF Client封装) wu
    SQL常用语句 wu
    任务调度平台 wu
    将DataSet 纵向显示数据
    关于OP和SI项目的记录点,防止遗忘难以查找
    java进阶
    git代码量统计
  • 原文地址:https://www.cnblogs.com/YiYA-blog/p/14015836.html
Copyright © 2011-2022 走看看