• git


    GIT

    分布式的代码管理系统,区别于svn等中央式代码管理系统。每个开发者的git客户端本地就是一个git 仓库,然后再通过gitlab/github的远程仓库与其他团队成员同步信息。

    安装

    推荐使用2.7

    yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
    wget https://github.com/git/git/archive/v2.7.4.zip
    unzip v2.7.4
    cd git-2.7.4/
    make prefix=/opt/git all
    make prefix=/opt/git install
    ls /usr/bin/git
    rm -rf /usr/bin/git              #删除默认自带版本
    ln -s /opt/git/bin/git /usr/bin/git
    git version
    View Code

    git 的四个区域

    本地目录      

      git 仓库所在目录,实际存在的目录,所有代码文件存放的目录
    暂存区域

      不可见的空间,代码开发完毕需要提交到暂存区域t,以便从暂存区提交到本地仓库
    本地仓库

      存放管理本地代码的仓库,就是git 初始化配置的目录。代码从暂存区提交到本地仓库
    远程仓库

      指的是gitlab或者github这些远程仓库。本地仓库与远程仓库建立连接后,本地仓库代码可以推送到远程仓库保管,远程仓库最新代码可以下载后本地。通过远程仓库实现团队成员合作开发,大家把自己的开发成果推送到远程库,其他同事同步远程数据到本地仓库再次基础上继续开发,本地完成后再次推送到远程实现了协同开发目的。

    文件的四种状态

    git 是通过文件状态的标识来管理的,新建的文件放在工作目录里面状态为untracked,此时文件还未被仓库管理,需要提交到暂存区以及仓库才会被仓库管理。

    创建一个本地仓库

    mkdir /opt/git-dir                    #创建一个git 工作目录
    cd /opt/git-dir/                        #进入目录
    git init                            #把此目录初始化为git 仓库
    git config  --global user.name "zhangsan"
    git config  --global user.email "zhangsan@163.com"
    View Code

    GIT的基本命令

    git status      
        #查看当前工作目录的文件状态,例如未被追踪状态,暂存区状态,根据状态提示下一步操 
         作。
    
    git add file-name/.             
        #添加工作目录文件到暂存区。file-name 指定文件,"."全部文件
    
    git commit -m "comment"       
        #提交暂存区的文件到本地仓库,每一次提交到仓库都会生成一个镜像来保存当前仓库文 
        件状态,通过id 标识,之前的镜像状态可以通过id去回退。
    
    git rm --cached file-name    
        #删除暂存区或分支上的文件, 本地保留, 只是不希望这个文件被版本控制,文件恢复为 
        未被追踪状态,如果文件从本地仓库被删除那么需要commit 提交一下。
    
    git rm file-name              
        #删除暂存区或分支上的文件, 同时工作区也要删除。如果文件从仓库被删除需要 
         commit提交一下。
    
    git log           
        #查看当前分支的提交记录以及各个记录的id号    
    View Code

    Git分支管理

    git 本质通过记录文件状态管理仓库的,每次commit后都会产生一个新的文件状态并保存记录此时状态,git之所以能够高效管理仓库,实际上使用的是指针的机制,每一次提交指针都会移动到提交的状态,回退也是切换指针到之前commit而文件并未被改变。

    而分支实际上就是指针。git 最开始只有一个分支master,新建一个分支实际就是新建一个指针,新建指针最开始与当前分支指向位置相同。

    当前切换分支实际上通过一个HEAD的指针来指向要切换的分支。

    分支思维导图

    分支命令

    git  status          查看当前所在分支,以及分支内文件状态

    git branch       查看当前存在的分支

    git branch about     在当前所在的分支,创建一个about 的新分支,新分支会和当前所在分支指针指向同一位置。
    git checkout about      切换到about 分支
    git branch -d about     删除分支
    ls git 工作目录 查看的是未被提交到缓存区的文件,和该分支中本地仓库文件。只能看到自己分支仓库文件,不能看到其他分支仓库文件。


    git merge test            把test 分支合并到当前分支
    git branch --merged   #查看哪些分支已经被merge 到当前分支了
    git checkout file-name    #对于已经提交到本地仓库的文件再次修改后,如果要撤销修改此命令会把仓库文件覆盖到本地工作目录文件。如果新建本地工作目录文件则无办法撤销。
    git relog           #查看之前的回滚id ,可以通过 git checkout id 把回滚后的状态再返回到之前的状态
    git reset options  id  #根据commit id 把库回滚到指定提交的状态

       --hard      #缓存区和工作目录跟随仓库都同步到你指定的提交

      --mixed       #默认选项。缓存区与仓库同步到指定的提交但工作目录不受影响

      --soft        #缓存区和工作目录都不会改变,只有仓库回滚

      
    练习merge

    merge与rebase 区别
    merge 后原来的分支还在,merge 操作会产生一个新的commit记录此次的merge 操作,会把分支的commit 操作按时间顺序合并过来
    rebse 会把分支的commit按时间顺序合并过来,但不会产生一个新的提交,就好像没发生一样不记录,原来分支

  • 相关阅读:
    IBatisNet基础组件
    IBatis 简易框架搭建
    JQuery 如何选择带有多个class的元素
    ASP.net MVC自定义错误处理页面的方法
    Console的使用——Google Chrome代码调试
    关闭 Visual Studio 2013 的 Browser Link 功能
    VS2013自带的Browser Link功能引发浏览localhost网站时不停的轮询
    JSON.parse()和JSON.stringify()
    Jquery easyui tree的使用
    EasyUI Tree判断节点是否是叶
  • 原文地址:https://www.cnblogs.com/fanggege/p/11507374.html
Copyright © 2020-2023  润新知