zoukankan      html  css  js  c++  java
  • Git 版本控制

    常见版本管理工具

    SVN
      集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库挂了或者不可访问,所有的使用者无法使用SVN.无法进行提交或备份文件。
    
    Git
      分布式的版本控制系统,在每个使用者电脑上就有一个完整的数据仓库,没有网络依然可以使用Git。当然为了习惯及团队协作,会将本地数据同步到Git服务器或者GitHub等代码仓库。
    
    Git与SVN的区别
      1、GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统,例如SVN,cVS等,最核心的区别。
      2、GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似svn,cvs等的文件夹里。
      3、GIT分支和SvN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录。
      4、GIT没有一个全局的版本号,而svN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。
      5、GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
    
    git config
    --global user.name lewen git config --global user.email fadewalk@163.com GIT的四个区域 Workspace:工作区 Index/Stage/Cached:暂存区 Repository:本地仓库 Remote:远程仓库
    Git命令就是用于将文件改动切换到不同的空间来记录

    GIT的四种状态

    204910718

    
    
    git rm -f filename      #删除工作区和暂存区的文件
    (use --cached to keep the file, or -f to force removal)​
    git diff file          #比较本地vs暂存区
    git diff --cached file    #暂存区vs本地版本库
    git log --oneline        # 一行显示
             --decorate      # 具体操作​
    git log -p                 #显示详细信息
    git log -1                #显示1条
    
    commit 相当于做快照
    注意 git status 操作提示
    
    从暂存区恢复到本地工作区
      git checkout -- file           # 撤销工作区更改
    
    从版本库恢复[覆盖]到暂存区(暂存区错误add交)
    git reset HEAD file
    
    从版本库回退到版本[某一次commit版本]
    git reset --hard f34j34
    
    回退后,回退点之后的git log 日志看不到
    git reflog 查看所有commit的日志
    

    分支概念

        Git的分支,从本质上来讲仅仅是指向提交对象的可变指针。在这一点上与SvN是有着本质的区别。SVN的分支实际上就是一个目录。

    Git的默认分支名字是master。在多次提交操作之后,你其实已经有一个指向最后那个提交对象的master分支。它会在每次的提交操作中自动向前移动。

    git 分支

    185782437186130484186139390

    186160281186233593

    git branch          #查看分支
    git checkout dev    #切换分支
    git merge dev       # 合并分支

    186957609

    如果修改了同一个文件,合并时会冲突,需要确定修改内容

    在master 修改冲突的文件,add 提交,commit -->合并完成

    git brach -d dev 删除分支

    标签使用

    前面回滚使用的是一串字符串,又长又难记。
    
    git tag v1.0    #一当前提交内容打一个标签(方便快速回滚),每次提交都可以打个tag。
    git tag        #→查看当前所有的标签
    git show vl.0    #一查看当前1.0版本的详细信息
    git tag v1.2 -m "version 1.2 release is test"  # 创建带有说明的标签,-a 指定commit id 标签名字(不加是当前打标签),-m 指定说明文字
    git tag -d vl.0        #我们为同一个提交版本设置了两次标签,删除之前的v1.0
    
    [root@centos7 git data]# git reset --hard 0bdf2e7    # --hard 快速回滚   --soft 
    HEAD is now at Obdf2e7 modified README file
    
    [root@centos7 git datal# git reset --hard V1.0
    HEAD is now at a66370a add oldboy dir
    

    github

    Github顾名思义是一个Git版本库的托管服务,是目前全球最大的软件仓库,拥有上百万的开发者用户,也是软件开发和寻找资源的最佳途径,Github不仅可以托管各种Git版本仓库,还拥有了更美观
    的Web界面,您的代码文件可以被任何人克隆,使得开发者为开源项贡献代码变得更加容易,当然也可以付费购买私有库,这样高性价比的私有库真的是帮助到了很多团队和企业。

    1、注册用户
    2、配置ssh-key
    3、创建项目
    4、克隆项目到本地
    5、推送修改到远程

    echo "#git">> README.md
    git init
    git add README.md
    git commit -m "first commit"
    git remote add origin git@github.com:lewen/git.git
    git push -u origin master
    git remote add origin git@github.com:lewen/git.git
    git push -u origin master
    ssh-keygen -t rsa
    将公钥添加到    一个公钥在github只能绑定一次
    将远程的拉下来,合并后,再 push
    git fetch 将远程的更新到本地
    git merge origin/master  合并远程的到本地master
    先拉,再合并,再推
  • 相关阅读:
    gdb调试
    大数据计算新贵Spark在腾讯雅虎优酷成功应用解析
    推荐系统resys小组线下活动见闻2009-08-22
    从item-base到svd再到rbm,多种Collaborative Filtering(协同过滤算法)从原理到实现
    Nexus设备升级5.0方法
    小议C#错误调试和异常处理
    BMP的图像处理
    一行代码让圆角风雨无阻,告别离屏渲染性能损耗
    推断数组中的反复元素
    HTML5:表格
  • 原文地址:https://www.cnblogs.com/wenyule/p/10014206.html
Copyright © 2011-2022 走看看