玩转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

    

 

 

 

 

 

 

      

 

 

      

 

posted @ 2017-09-19 15:04  mx轩  阅读(169)  评论(0编辑  收藏  举报