一:Git简介
        Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,采用了分布式版本库的方式,不必服务器端软件支持。

二:基本概念:

版本库(Repository)是版本控制系统用来存放所有历史数据的地方,主要存放各个文件的当前状态,历史修改时间,谁做的修改,以及修改的原因。举个简单的例子,就好比银行的保险箱,每次往里存钱,都会记录谁,什么时间,存放多少钱,存入的原因等。对应的版本库(Repository)主要存放代码(文档,数据,图标等),并且每一次更新都要记录谁,什么时间,提交了什么更新,以及更新的原因是什么。
git就是管理我们这个版本库的管家,相当于银行保险箱的管理人员。以前的版本控制入CVS,SVN等都是集中控制管理的,也就是有一个中央服务器,大家都把代码提交到中心节点(入下图),而git是分布式的版本控制工具,也就是说没有中央服务器,每个节点的地位平等,有点P2P的味道,众生平等,谁也别瞧不起谁 。

三:Git 与 SVN 区别

         GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征。
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哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

四:安装环境

windows 下安装git 官网下载太慢,这里推荐自己百度云下载  http://pan.baidu.com/s/1slqN1dr 。安装完成后,桌面上会有Github和Github Shell的快捷方式出现。

五:Git 快速入门

使用Git前,需要先建立一个仓库(repository)。您可以使用一个已经存在的目录作为Git仓库或创建一个空目录。
1:创建版本库:  mkdir test_git        //新建目录test_git
                     cd test_git            //进入目录
                     git init                  //初始化git,现在git会管理这个目录中的所有内容了
2:增加文件:      touch helloworld.txt     //创建文件,在windows下直接到目录新建文件即可
                    git add helloworld.txt    //告诉git我要添加一个文件,但是git并没有把你所添加的文件放入版本库中,而是对内容进行.//相当于添加内容的身份证号,将该身份证号添加到版本库index,即告诉git我有一个文件编号XXX的内容将要提交,//但是并没有真正提交到版本库(如下图),要想将文件真正放入版本库需要commit
3:提交 git commit -m "add helloworld.txt"         //-m参数是提交留言,说明为什么要提交的更新做了什么事情,方便别人查看。
  对图的说明:working directory是当前的工作目录,而stage是暂存区也称索引区存放工作目录中那些你打算提交到版本库的变更,git add只是将文件的索引提交的版本库,而真正的内容并没有进入版本库,History就是版本库,需要注意的是这是本地的版本库,存在于本地的电脑中,相当于你电脑上一个你的私人钱财管理员。
4、两个常用操作经常一块使用
git add some-file
git commit -m "some changes to some-file"
git status:查看当前代码状态: 会显示changes to be commited       表示将要提交但是尚未提交的修改(已经add但是尚未commit),也就是在stage区域已经有了,但是还没有commit的内容
                         changed but not updated       表示已经修改但是还没有添加到暂存区的内容(尚未add,当然尚未commit)
5、查看文件改动 git diff 
    git diff              比较working direcotry 和stage的差别
    git diff -cached   比较stage和history的差别
    git diff Head      直接比较working directory 和history的区别
6、文件重命名:git mv
    git mv helloworld.txt helloworld2.txt      //将helloworld.txt重命名helloworld2.txt
六:理解和使用分支
      git可以使用多条分支,这样就可以再不影响当前进度的情况下,用创建新的分支的方法来进行接下来的开发,何时使用分支是一门艺术,一般来说:
    1. 试验性修改(常用):测试新的算法或者为某个特别的模式重构部分代码。
    2. 增加新功能(常用):为每个新功能的开发创建新的分支,完成该功能开发后,在将其合并到主分支。
    3. Bug修改:修复代码中的bug,可以创建新分支来对该bug进行修改,然后将修改合并到主分支上。
    
    创建新分支:git branch test            //创建名为test的分支
    切换分支:  git checkout test          //切换到test分支工作, 与上面的命令经常一起使用
    查看分支:git branch                      //查看前版本库(本地)的所有分
    合并分支:git checkout master        //切换到“要合并到”的分支,常见的就是test分支合并到master分支
    所以先切换到master分支
              git merge test                   //合并test分支到master分支
注意: 在合并分支的时候有时候会出现冲突(conflict)的情况。创建的情况是master分支和test分支对同一文件的同一处代码的内容不一样(例如:master分支在hello.cpp中第三行写入的是"hello", 而test分支在hello.cpp的第三行中写入的是“world”),这样使得git不知道如何是好,这时候就需要你手工修改代码了,我难道要记住master和test在同一位置的内容?当然不用了,git会在git merge的反馈信息中说明,代码在何部分存在冲突。
删除分支: git branch -d test          //删除test分支
分支重命名:git branch -m test test2      //将test分支重命名为test2,这个命令不常用
七:理解和使用分支
    查询所有的commit历史:git log
    查询指定范围的commit历史: git log --since = "5 hours"                //查看最近5小时的commit历史记录
  git log --before = "5 hours" -2                                                //查看5小时之前最后2次的提交commit记录
    git log 18f822e..0bb3dfb                                                       //查看从18f822e(不包括18f822e)到0bb3dfb之间的提交记录
    git log 18f822e..HEAD                                                          //HEAD表示当前所在分支的最新版本,即HEAD指向当前所在分支的最后一次commit
    git log HEAD^^^                                                                //^表示父节点,HEAD^就表示HEAD的父节点,以此类推
    git log HEAD~3                                                                   //~N 表示回溯N个节点,所以与上一个表述等价
    
   查看版本之间的差异: git diff                                                    //查看working dir和stage(index)之间差异
    git diff  --cached                                                                //查看stage(index)和History(当前分支版本库)之间的差异
    git diff  HEAD                                                                    //查看working dir 和 History之间的差异
    问责文件内容:git blame hello.cpp                           //查看所用向hello.cpp提交内容的人,方便问责到人,谁,什么时候,提交代号,提交内容,留言等都会显示
    增补提交:     git commic  -C HEAD -a --amend         //用head上次提交的留言(-C表示comments),将这次的提交追加到上一次提交上,不会创建新的提交代号.

八:理解和使用分支

还有一些不是很常用的操作简单的列在下面,如果用到这些命令,可以参看git doc或者本文参考文献中所列的内容,不一一赘述。
翻转提交:       git revert
复位:            git reset
分支变基:      git rebase
标签:            git tag
git子模块:     git submodule
导出版本库:   git archive
二分查找:      git bisect
九:理解和使用分支
github就是提交远程版本库服务的网站,所以我们这里的远程版本库为方便起见用github代替,上面我们得操作都是和本地的git交互,相当于是和本地的git小助手交互,如何将这些在本地的代码和github上的版本库连接起来:将本地的代码推送到github上,将github上的代码检出(checkout)到本地?
git支持三种协议:
SSH协议格式: usrname@github.com/registername/helloworld.git          //常用于将本地版本库推送到github上的版本库
git协议格式:   git://github.com/registername/helloworld.git                 //常用于从github版本库拖入本地版本库
HTTP/HTTPS协议格式: http://github.com/registername/helloworld.git
克隆github上的Spoon-Knife版本库到本地:   git clone git://github.com/octocat/Spoon-Knife.git
版本库同步:                                          git fetch              //取来(fetch)远程版本库到本地,但是并不与本地分支合并                           
                                                          git pull                //拖入(pull)远程版本库,与本地分支合并,相当于 git fetch + git merge 
推送本地代码到远程版本库:                       git remote add origin https://github.com/registername/reponame.git   //为远程版本库reponame取别名origin
                                                          git push origin master                                  // 将本地master分支推入github上的origin

版本管理工具Git记录相关推荐

  1. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

  2. 版本管理工具-Git

    版本管理工具-Git 在我们学习编程的时候,一个项目的代码量很多,同事之间各司其职,这个时候统一项目的代码,完善项目的流程就非常重要了,像Git,Svn都是非常棒的项目管理工具,以下总结一下相关的简单 ...

  3. 版本管理工具GIT篇

    版本管理工具GIT篇 一.版本管理工具干什么用的? 备份文件 作用同U盘 网盘 保存每天的成果   若是本地文件丢失 损坏  找备份 如 打游戏时候的存档 记录历史 网盘 U盘存储的是文件最新状态   ...

  4. 版本管理工具Git(2)git的使用

    上一篇带大家认识了Git,在本篇中将讲解Git的安装及使用: Git系列导航 版本管理工具Git(1)带你认识git 版本管理工具Git(2)git的安装及使用 版本管理工具Git(3)VS下如何使用 ...

  5. git管理工具 linux,linux系统下使用流行的版本管理工具 Git

    前几天被版本管理困扰了好久,主要是因为 没法回到之前的版本,新版本又出了问题真的很尴尬. 终于决定使用目前网上很火的版本管理工具-------Git 历史啥的就不说了,说些有用的. 我用的是oschi ...

  6. 版本管理工具git和TortoiseGit

    版本管理工具git     git用于管理代码版本,可从官网下载.使用教程网上一搜很多,以及官网也有详细的说明.主要就是Add,push,pull等命令操作.git和远程仓库配合使用,可以保存,管理我 ...

  7. 【Linux】版本管理工具 Git

    目录 一.什么是 Git 二.如何使用 Git 1.创建远程仓库 2.将远端仓库克隆到本地 3.将本地文件添加到仓库 3.1.三板斧第一招:文件添加 3.2.三板斧第二招:提交本地 3.3.三板斧第三 ...

  8. [转]Windows环境中使用版本管理工具 Git

    Git 是一个分布式版本控制工具 Git --- The stupid content tracker(傻瓜内容跟踪器),Linus 是这样给我们介绍 Git 的. Git 是用于 Linux 内核开 ...

  9. 代码版本管理工具Git

    Git 的发展历史 在做一个项目工程的时候,代码总是不断地更新,于是你就可能一边写代码,一边就为你的代码创建了很多的版本文件夹,分别叫"项目 0.1"."项目 0.2&q ...

  10. 实验室培训(一)—— 版本管理工具git

    1.什么Git Git是分布式的版本管理工具,在实际项目管理中起到非常重要的作用. 思考1:什么是版本管理工具?为什么要使用版本管理工具? 答:了解版本控制. 2.版本控制 版本控制(Revision ...

最新文章

  1. codewars-013: Ease the StockBroker
  2. Selenium+java - 借助autolt完成上传文件操作
  3. 一句话说汽车(超搞笑)
  4. Smarty中的变量
  5. Linux常用编辑器使用:vi、vim、nano、gedit
  6. 下一代Asp.net开发规范OWIN(3)—— Middleware
  7. Android Studio 内存不足
  8. 千头万绪:从一道面试题看数据库性能和安全的方方面面
  9. eclips git中的add to Index无效解决
  10. dart 语言中的列表(List)
  11. HTML a 标签的伪类
  12. 在线订餐系统php心得体会_基于php的网上订餐系统的设计与实现论文.doc
  13. centos下nginx安装和配置
  14. RC低通滤波器——CR高通滤波器---的使用
  15. 弘辽科技:淘宝保险保证金怎么开通?它和消保保证金有什么区别?
  16. java如何改变图片大小_如何在Java中调整图片大小?
  17. Linux(二、三、四)简单命令、系统目录结构、文件类型、命令行管理文件学习
  18. 数组的降维与升维方法
  19. 计算机导论中逻辑与或非的公式,12.函数与公式之逻辑函数(or,and,not,if)
  20. yocto项目下载与编译

热门文章

  1. 一套很好的51单片机教程,云龙51单片机视频教程(王云)
  2. 细胞自动机 通用计算机,科学网—《走近混沌》-27-初级细胞自动机 - 张天蓉的博文...
  3. 我们开发中常用的常用浏览器常用插件,比如FeHelper,React Developer Tools, Vue Devtools,沙拉查词,Infinity,OneTab,AdGuard等
  4. SQL Server 2008 Express 及 SSMS Express 下载安装配置教程
  5. iOS使用otool反编译查看接库
  6. python导入鸢尾花数据集_决策树分类鸢尾花数据集python实现
  7. Python之OpenGL笔记(36):环境光下的棋盘球体
  8. 原生Java萝卜影视4.0.5源码/完美修复完整版萝卜影视源码
  9. SAS安装数据SID文件无效问题的解决
  10. 88个塑胶模具设计中常用知识点!