zoukankan      html  css  js  c++  java
  • git实战

    安装好git之后,新建文件夹,然后打开文件夹右键git bash,打开git的命令行,输入git init初始化、让git帮我们管理当前文件夹。

    git status 查看当前文件夹中的所有文件的状态(三种状态)。

    三种状态:

    红色:新增的文件/修改了原文件,->git add 文件名,变成绿色;

    绿色:git已经管理起来,->git commit -m "描述信息",变成白色;

    白色:生成版本。

    (如果没有配置用户名和邮箱,在git commit时会报错,点击查看配置方法。)

    git log,查看版本记录。

    三个区域:

    工作区:包括已管理的文件(白色,是HEAD指针指向的一个版本的文件)、新文件(红色)、修改过的文件(红色),git add 文件名,将文件保存到暂存区;

    暂存区:绿色,git commit -m "描述信息",提交到版本库

    版本库:包含所有文件的所有版本。

    版本切换:

    在经过多次git commit提交到版本库之后,如果想切换到过去的版本,就需要先git log查看文件的版本号,然后使用git reset --hard 版本号,回滚到过去的版本,即HEAD修改指针从指向当前版本到指向过去的版本;

    当回到过去版本之后,又想回到最新的版本,使用git reflog查看所有版本的操作记录,然后找到最新版本的版本号,使用git reset --hard 版本号,再次回滚到最新的版本。

    三个区域切换:

    git reset --soft 当前版本号,从版本库回到暂存区;

    git reset HEAD 文件名,从暂存区回到工作区;

    git checkout -- 文件名,将已修改的文件变回到原先的样子;

    git reset --mix 当前版本号,让文件直接从版本库回到工作区。

    分支:

    在一个版本的软件开发完提交之后,继续开发下一个版本,会新增文件和修改部分之前的文件,之后形成又一个新的版本,然后再提交到版本库。此时,新的版本只会记录那些新增的文件,和修改的那部分文件的内容,而不是将改动后的文件整个的保存到一个新的版本中,所以,如果想要得到新版本的完整的文件内容,需要找到未改动的那部分文件内容,即需要一个指针,从新版本指向之前的版本,这样就能既节省存储空间又能获取到新版本的完整内容;当基于最新版本由两个不同的小组进行开发,就会形成两个不同的版本指针链条,即版本出现了分支,如果在某个时刻,两个小组想要合并他们的开发内容,即分支的合并,又回到了同一个版本上面。

    紧急修复线上BUG:

    当需要开始一个新的功能的研发的时候,则从主分支的最新版本开一个分支,如起名字为dev分支,进行开发。如果在开发过程中线上的代码出现了BUG,则立马回到主分支的最新的一个版本,然后开一个新的分支,如起名为bug分支,专门来解决BUG,在BUG解决好之后,将其合并到master主分支上。然后切换回最新功能开发的分支上继续新功能的开发,再开发一段时间,经过几个版本的开发,新功能的代码开发完成,然后将其合并到master主分支上,如下图所示,master分支的C5是将bug分支的C5合并到masterC3之后的master最新的版本。合并到meterC3时要切换回master分支,合并完成之后就可以将bug分支删除了。

     

    然后,接着继续开发dev分支的新功能,又开发了一个月,把新功能开发完了,C6也是要合并到meter主分支,如下图所示,dev分支开发提交了两次形成了两个版本,即C4和C6,开发完成后合并到主分支上,即C6合并到master的C5上边,形成master最新的版本C7。C6合并到C5上边时,可能会发生冲突(如果C5和C6同时修改了同一个文件就会发生冲突,如果修改的不是同一个文件则不会发生冲突),因为C6是从C3过去的,而在dev开发期间,C3修复了bug改动之后形成了C5,所以C6合并到C5上可能会发生冲突,如果C6直接合并到C3上边则不会发生冲突。发生冲突时,会在冲突的文件中显示出冲突的地方,手动解决冲突的数据之后,再提交就可以生成合并后的版本C7。

    注意:无论主分支还是分叉分支,每一个版本的版本号都是唯一的。分叉分支的作用就是,开一个叉专门去做一件事,而不影响其它的环境,即分支是一个隔离的环境,去做想做的事情,所以分支的作用就是环境的隔离。每一次提交对应一个版本。

    上边的操作对应的执行命令如下:

    git branch  查看所有分支名称及当前所处的分支名称

    git branch dev(新建的分支名称)  在当前分支新建分支

    git checkout dev  跳转到新的dev分支中去

    git checkout master  切换回主分支

    git branch bug  在当前master分支下新建bug分支来修复bug

    git checkout bug  切换到bug分支来进行bug修复

    git checkout master  修复完成之后切换回master分支来进行分支的合并

    git merge bug  在当前master主分支之上将bug分支合并进来

    git branch -d bug  删除bug分支,因为bug分支已合并到master主分支,之后就没用了

    git checkout dev  回dev分支继续开发

    git checkout master  在dev分支将新功能开发完之后,回到master主分支

    git merge dev  合并dev分支到当前master分支。合并时可能会发生冲突,若有冲突,手动解决冲突,之后git add .、git commit -m "...",就会生成新的合并后的版本了。  

    分支的用途是:

    在开发一个新功能、并行开发不同的模块、历史版本的bug修复时要用分支,修复或开发完之后要合并到主分支上。

    分支是一个相互隔离的环境,可以完成各自想做的事。

    合并分支之前要先切换分支,如要将bug分支合并到master分支,要先切换分支回master再将bug分支合并到master分支。

    合并分支时可能会出现冲突,如上图dev分支的C6版本要合并到master分支,即C6版本要和master分支的C5版本合并,如果之前bug分支和dev分支修改了同一个文件,此时合并分支时会出现冲突,可以在合并分支之后,手动去修改冲突的文件,然后commit提交形成一个最新版本即可。

     工作流:

    接到一个项目,默认有一个master分支,master主分支上主要放“正式”版本,不要在master上瞎搞开发,第一个master版本之后建立一个dev分支,专搞开发,有很多版本,如公测版,测试稳定之后,合并到master主分支成为正式版本上线。

     master分支保留正式版本即上线的版本,dev上是开发版本公测版本。

    笔记来源:https://www.bilibili.com/video/BV1tz411i7t1?t=60&p=22

  • 相关阅读:
    驱动模块和装模块的概念——Junit单元测试案例
    虚拟机配置Openstack常见问题汇总
    Ubuntu配置OpenStack 二:配置时间同步NTP和安装数据库Maridb以及问题总结
    Ubuntu配置OpenStack 一:主机环境配置以及问题总结
    Eclipse连接SQL Server 2008数据库 以及问题总结
    linux信号与trap命令
    shell之数组
    wget下载命令 与功能更强大的 curl 文件传输命令
    RSync 文件备份同步
    rhel7和centos7的新防火墙软件 firewalld
  • 原文地址:https://www.cnblogs.com/wisir/p/13227117.html
Copyright © 2011-2022 走看看