• 玩转git版本控制软件


    一、git的基本介绍

      1、什么是git?

        git是个开源的分布式版本控制软件,用以有效、高速的处理从很小到非常大的项目版本管理。说白了就是个版本控制软件

      2、git的使用方法

        git软件是通过命令来实现管理的,git命令和linux命令类似,可以通过Linux命令方式来管理git

    二、git命令基本介绍

      1、版本上线需要用到的功能

        1、使用pwd和cd命令进入到项目的所在目录(项目根目录)

        2、git init

          

          初始化当前项目目录即将当前文件夹初始化为版本库目录,初始化后,会在当前目录自动创建 .git 隐藏文件夹,该文件是Git中最重要的文件夹,因为Git相关文件以及版本都将保存在该文件夹中,有了它就可以记录多文件版本了,通过Git命令可以将所有版本保存在 .git 文件中,两条命令创建一个版本

        3、git status 

          

          由于之前生成了个.git 隐藏文件夹,可以通过该命令来查看该文件夹的状态,如果项目文件代码被修改就会呈现红色字段,表示那个文件被修改

        4、git add .

          

          添加当前项目目录下所有的文件到版本库,这时查看.git文件夹内文件状态就是绿色可执行状态

        5、 git commit -m  "版本名称"

           

          提交到版本库,并起名版本名称,以便后期回滚    

          注意:执行git commit 命令时,可能会提示进行用户和邮箱的配置,该配置用于记录当前版本由那个用户提交

            git config --local user.name 'xuan'

            git config --local user.email 'you@example.com'

         6、命令总结

            1、Git把管理的文件分为了两个区域四个状态。

            

          2、工作区:当前开发程序所在目录称为工作区,即:工作开发程序都是在该目录,该区域的文件会有状态的变化且状态由git自动检测,如果程序中文件和文件内容做任何操作(增、删、改),文件状态均会被检测到,可以使用 【git status】命令查看。

          3、版本库:工作区检测到有文件发生变化,那么意味着较上一个版本之后对程序进行了修改,修改完成之后,可以当做下一版本进行提交,那么就是执行 【git add .】 将所有文件提交到暂存区,然后再执行【git commit -m '又一个版本名称'】提交到版本库的分支即可,之后可以使用【git log】命令查看版本记录。

          4、补充命令

            1、git init,初始化,表示即将对当前文件夹进行版本控制。  

            2、git status,查看Git当前状态,如:哪些文件或文件夹被修改过、哪些文件或文件夹还未提交到版本库等。

            3、git add 文件名,将指定文件添加到版本库的暂存状态(*代表当前文件夹内的所有文件,.代表当前文件夹)。

            4、git commit -m '提交信息',将暂存区的文件提交到版本库的分支。

            5、git log,查看提交记录,即:历史版本记录

    三、git事物回滚方法

      1、git reset --hard  版本号

        

        通过该命令可以直接回滚到指定的程序版本,但是在此之间的版本信息就会被删除。

      2、git reflog

        

          

        可以通过git reflog来查看被删除了的版本信息,并且可以通过git reset --hard  uuid号的方式来恢复到被删除版本的当前位置

      3、git stash

         

        stash用于将工作区发生变化的所有文件获取临时存储在“某个地方”,将工作区还原当前版本未操作前的状态;stash还可以将临时存储在“某个地方”的文件再次拿回到工作区。说白了就是版本1之后的代码ok版本1之前的代码出现bug,就可以将版本1之后的代码先暂存在某个地方,然后恢复到版本1初始状态,修改完bug后再把版本1的程序重新git add . git commit -m 下最后吧版本1暂存的代码恢复回来

      4、git stash pop 

          

        该命令是将程序暂存在某地的代码恢复回来继续开发但是当执行 git stash pop 命令时,可能会遇到冲突,因为在紧急修复bug的代码和通过stash存储在“某个地方”的代码会有重合部分,所以执行 git stash pop 时候就会出现冲突,有冲突解决冲突即可。而冲突区域git会显示处理冲突文件,冲突文件内的冲突代码也会显示出来,改就是了

      5、git回滚命令总结

        

        git stash                  将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态

        git stash pop           将第一个记录从“某个地方”重新拿到工作区(可能有冲突)

        git stash apply         编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突)

        git stash list             查看“某个地方”存储的所有记录,因为一个git可能会多次stash     

        git stash clear          清空“某个地方”,可以一次性情况多个stash  

        git stash drop      版本号    删除指定版本号的记录

        git reset  -- soft   版本号  将分支程序代码回滚到缓存区

        git reset  -- mix   版本号   将分支程序代码回滚到修改内容区

        git reset  -- hard   版本号 将分支程序代码直接回滚到初始状态

        git reset head   文件名        将缓存区文件回滚到修改内容区

        git checkout   文件名          将修改内容区文件直接回滚到初始状态

    四、git分支介绍

      1、查看并创建一个分支

        

      2、切换到分支上,开发新的功能

        

      3、将分支版本提交到版本库中

        

      4、切换到master分支,将dev分支内容合并到master分支

        

      5、该分支的应用场景

        

         注释:一般情况master分支代码是应用于线上,而dev分支是应用于线下代码开发,如果线上代码出现bug只需要重新开一个bug分支,修复bug然后提交到版本库即可,并不会影响到众多dev分支。

        注意:git merge 时也可能会出现冲突,解决冲突的方式就是找到冲突文件,手动修改冲突并提交,此处不再敖述,冲突的原因有可能是master分支修复bug后并且线下dev分支开发完程序需要和线上master合并时出错。

        注意:同一级别上创建的分支等级时一样的,也就是说master,bug,dev等分支都是兄弟关系。

       6、分支命令

        git branch 分支名称             创建分支

         git checkout 分支名称          切换分支

         git branch -m 分支名称        创建并切换到指定分支

         git branch                          查看所有分支

         git branch -d 分支名称         删除分支

         git merge 分支名称              将指定分支合并到当前分支

    五、git代码托管软件

      1、GitHub软件

        一个基于Git实现的代码托管的平台,可以将内容以及版本记录在远程也保存一份,就相当于云盘,属于第三方软件,所有不够安全,平时放放自己写的代码就可以了千万别吧公司的代码放在上面。

      2、GitLab软件

        和GitHub软件功能一样,但这是公司内部自己搭建的软件,相对安全。

      3、由于GitHub软件GitLab软件的功能一样使用方法也一样,所有现在基于GitHub实现代码托管,需要以下步骤:

        1、注册GitHub

          略

        2、创建仓库,如下图所示:

        

        注释:创建完仓库后会有一个URL路径或者是ssh密钥登陆路径代指该仓库,

        3、远程仓库创建好后设置公司git

          

          注释:该命令作用是为地址起一个别名为s5day,方便后续使用

        4、将公司本地的master分支代码push到仓库中,至此仓库就右一份我们自己的代码了

          

        5、在家中可以将仓库中的代码先clone下来,然后编写代码提交到仓库中

          

          注释:由于在公司提交的数据是master分支所有默认clone下来的就是master分支

       6、第二天到公司需要吧仓库中最新的代码拉下拉并合并到本地,然后继续开发代码,最后上传到仓库

          

       7、第二天晚上在家里将仓库最新代码拉下来,存放在版本库中,然后将版本库拉下拉的代码合并到工作区中

          

          注释:长此以往,将Git和GitHub结合使用做到避免电脑损坏造成数据丢失以及多地开发的问题,上文执行过程中执行 【git pull master 分支】命令等同于【git fetch master 分支】+ 【git merge master/分支】,并且在执行过程中可能会出现冲突,原因是由于本地代码和获取的最新代码有重合部分,那么就需要自己手动解决冲突然后再继续开发。

          git rebase master/分支  === git merge master/分支,两者之间的区别是merge执行流程比rebase执行流程读取性能差,最终结果不变

      4、通过GitHub实现程序员合作开发

        1、合作者方式:将其他用户添加到仓库合作者中之后,该用户就具有向当前仓库提交代码。

          

        2、组织方式:,创建一个组织,然后再该组织下可以创建多个项目,组内成员可以向组内所有项目提交代码。PS:也可以对某个项目指定合作者

      

      5、通过GitHub中的Fork实现为其他程序员仓库中的代码修改bug即贡献代码

        1、在自己仓库中找到想搞的项目,fork一下,然后这个项目就在自己仓库出现了

        

       2、从自己仓库获取代码并进行编辑提交创建并提交一个pull request,然后等待原作者是否同意这个pull request,如果同意那么在作者的源代码中就推出现小P提交的功能

      

    六、git补充内容

      1、git相关配置文件(一共右三个配置文件)

        系统配置: /private/etc/gitconfig

        用户配置: ~/.gitconfig   全局配置文件

        项目配置:.git/config       局部配置文件只是在局部项目中生效,比如说配置个项目的的路径别名就是在该配置文件下

      2、用户免密钥登陆github

        1、首先在git端生成一对密钥

          创建一对秘钥  ssh-keygen -t rsa,然后将 id_rsa.pub (公钥)内容拷贝到github中,日后操作无需再输入用户名和密码。
          注意:如果使用密钥登陆那么需要在git链接github库的时候使用github的ssh密钥方式链接。

      3、git中忽略不必要的文件状态,意思就是说设置不需要git监听状态的文件

        1、首先在当前项目目录下创建一个.gitignore文件,然后将需要忽略的文件添加到该文件内即可

        2、匹配条件

          以斜杠“/”开头表示目录;   

          以星号“*”通配多个字符;   

          以问号“?”通配单个字符   

          以方括号“[]”包含单个字符的匹配列表;   

          以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;

          """a.*,test/[abc].py, [abc],test/*,!test/a.py,.idea/*, *.pyc, *.excel"""

       4、一张图总结git与github

        

          

          

  • 相关阅读:
    echarts 实时获取数据
    js 对象与数组相互转化的快捷方法 Object.keys()、Object.values()、Object.entries()
    koa2 中使用 svg-captcha 生成验证码
    分享面试资料包
    8位单片机中一个容易被忽视的溢出问题
    献给半夜加班到深夜的女程序员
    java调用WebService接口方法
    算法小记:快速排序
    STL源码剖析 迭代器(iterator)概念与编程技法(三)
    [置顶] 蓝牙基础知识进阶——Physical channel
  • 原文地址:https://www.cnblogs.com/xuanan/p/7551929.html
Copyright © 2020-2023  润新知