Git是世界上目前最先进的分布式版本控制系统。

工作原理图:

Workspace工作区,Index暂存区,Repository本地仓库区,Remote远程仓库。

SVN与Git的最主要的区别?

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。

Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

Git基本指令:

1.创建版本库

(1)找路径:找到你想创建版本库的文件夹下;右键出现Git.bash here(前提是安装好了Git)

        或者cd f:->    cd 文件夹名字

(2)把当前目录升级成git的管理仓库:指令 git init    之后会在当前文件夹下出现名 .git 隐藏文件夹。

(3)git status指令 查看当前文件夹下有没有文件/文件夹未提交的:

     上半部分的红色字体modified:....为已经添加到版本库的,修改后未提交的文件。(在这说一下,不是一创建版本库 git init 就把当前文件夹下所有文件放进库里的,而是需要手动添加。)

     下半部分红色Untracken files:......就是当前文件夹没有添加到版本控制库里的文件;

(4)git add  test.txt 指令,就是把文件或者文件夹添加到版本控制库里。

       我们可以创建一个testgit文本文件试验一下,文本内容为111111;

(5)git commit 指令通知git,已经把文件提交到仓库了。

      

        再用git status查看当前状态 ,可以看到没有testgit文件,因为我们已经add了testgit并且commit提交了。而另外两个文件依然为modified,因为我们一直没有add他们两个,所以就像放着把。

       然后我们尝试修改testgit.txt文件,添加一行222222,再git status查询一下

发先现estgit成了modified:,因为我们修改了还没提交。

(6)git diff testgit.txt 指令查看文件遇上一个提交版本又哪里不同。

可以看到出现了红色和绿色两个部分,红色为之前已提交的内容,绿色为当前修改后 未提交的内容。   之后我们就可以继续更新版本库了(git add   +  git commit)

(7)版本回退git reset -- hard HEAD^:当前testgit.txt已经更改两次,我们可以用  git log  指令查看每次提交的内容(也就是commit的日志)

      ps:git log是一个功能很强大的指令,这里使用的是git log -- 文件名,限定显示此文件的提交日志,如果不对git log指令做任何修饰,那么他将会显示所有的日志信息。让你的版本库修改过很多次有很多文件时,那么多信息简直爆炸。(推荐看一下这个指令的全解析)

git log显示的顺序时从近到远,我们要回退到上个版本的话就要使用  git reset -- hard HEAD^       。(如果要回退前N个版本就可以用指令git reset --hard HEAD~N)

会退后,通过命令cat readme.txt查看当前内容发现真的变回去了。

   ***我们也可以根据版本号来回退, git reflog -- testgit.txt(与git log差不多的用法)

     34946b4就是版本号,然后就可以用指令git reset --hard 版本号

(8)撤销修改指令 git checkout -- 文件名

    应用情景:再未提交前,想要恢复到以前的版本。

方法一:手动修改然后add+commit;方法二:回到上一个版本git reset --hard HEAD^

       方法三:git checkout -- testgit.txt   (意思是把testgit.txt文件在工作区做的修改全部撤销,回到add时的状态。)

(9)删除文件指令  rm testgit.txt

    删除也可以手动右键删除,删除后有两个选择:1.commit提交状态,彻底删除;2.从版本库中恢复文件,也是用git checkout -- testgit.txt 指令


待完善。。

    

      

Git基本操作指令的更多相关文章

  1. iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )

    一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的   git的起源 作者是Linux之父:Linus Bened ...

  2. 实践中的Git常用指令分析

    从工作开始,一直都在使用为知笔记(作为程序员需要知道的内容很多---不需要很深入理解,一段时不使用的东西可能就会忘记).但本周一同步不同PC端时,了解到为知会在2017/1/1开始收费! 既然收费了, ...

  3. 【docker 一】入门实践、环境部署、基本操作指令、镜像库、数据卷

    简述 `docker是如火如荼的容器技术,今后会陆续上传关于微服务技术的学习笔记,希望能和大家一起学习一起分享!` docker环境搭建 1.获取最新版的Docker安装包 $ wget -qO- h ...

  4. Git基本操作和GtHub 特殊技巧

    <GitHub 入门与实践> 笔记 了解GitHub Git 和 GitHub 的区别 在Git中,开发者将源代码存入名为"Git仓库"的资料库中,并加以使用.而Git ...

  5. Git学习系列之Git基本操作拉取项目(图文详解)

    前面博客 Git学习系列之Git基本操作推送项目(图文详解) 当然,如果多人协作,或者多个客户端进行修改,那么我们还要拉取(Pull ... )别人推送到在线仓库的内容下来. 大神们是不推荐使用 pu ...

  6. Git学习系列之Git基本操作推送项目(图文详解)

    前面博客 Git学习系列之Git基本操作提交项目(图文详解) 如果完成到一定程度,那么可以推送到远端在线仓库. 推送之前,请确保你已经设置了全局的 user.name 和 user.email, 如果 ...

  7. Git学习系列之Git基本操作提交项目(图文详解)

    前面博客 Git学习系列之Git基本操作克隆项目(图文详解) 然后可以 cd 切换到 LispGentleIntro 目录, 新增或者修改某些文件.这里只是模拟一下操作, 实际情况可能是 使用 Ecl ...

  8. Git学习系列之Git基本操作克隆项目(图文详解)

    不多说,直接上干货! 想必,能进来看我写的这篇博文的朋友,肯定是了解过. 比如SVN的操作吧,最常见的是 检出(Check out ...), 更新 (Update ...), 以及 提交(Commi ...

  9. git常用指令整理

    git常用指令一览表 GIT指令 说明 git add . 将全部文件的内容加到Git索引以便执行commit. 这个指令不会检查文件夹中是否有文件被删除. 要注意的是,只有执行" git ...

随机推荐

  1. 洛谷P2634 聪明可可

    还是点分治 树上问题真有趣ovo,这道题统计模3为0的距离,可以把重心的子树分开统计,也可以一次性统计,然后容斥原理减掉重复的.. 其他的过程就是点分治的板子啦. #include <bits/ ...

  2. 机器学习---线性回归(Machine Learning Linear Regression)

    线性回归是机器学习中最基础的模型,掌握了线性回归模型,有利于以后更容易地理解其它复杂的模型. 线性回归看似简单,但是其中包含了线性代数,微积分,概率等诸多方面的知识.让我们先从最简单的形式开始. 一元 ...

  3. python学习日记(OOP——@property)

    在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: s = Student() s.score = 9999 这显然不合逻辑.为了限制score的 ...

  4. python 类的私有变量和私有方法

    #!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/11/08 8:46 # @Author : lijunjiang # @Fil ...

  5. Codeforces Round #553 (Div. 2)

    传送门 A. Maxim and Biology 题意: 给出一个串s,问最少需要多少步操作使得串s包含"ACTG"这个子串,输出最少操作次数: 题解: 枚举每个位置 i,求出将 ...

  6. 对于mysql数据库优化的见解

    一.数据库占用的空间大小.表占用空间大小.索引占用空间大小 在用阿里云的数据库的时候经常出现磁盘空间爆满的情况.所以要经常查询数据库相关内容占用的磁盘大小,有很多mysql客户端如navicat 就可 ...

  7. 模板方法模式-Template Method(Java实现)

    模板方法模式-Template Method 在模板模式中, 处理的流程被定义在父类中, 而具体的处理则交给了子类. 类关系图很简单: Template接口 这里定义了子类需要实现的方法(before ...

  8. 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式

    一. 背景 说起EF的增删改操作,相信很多人都会说,有两种方式:① 通过方法操作  和  ② 通过状态控制. 相信你在使用EF进行删除或修改操作的时候,可能会遇到以下错误:“ The object c ...

  9. ElasticSearch 索引 剖析

    ElasticSearch index 剖析 在看ElasticSearch权威指南基础入门中关于:分片内部原理这一小节内容后,大致对ElasticSearch的索引.搜索底层实现有了一个初步的认识. ...

  10. jpa返回List<Map<String, Object>>相当于jdbctemplate的queryForlist

    public class Test(){ @PersistenceContext(unitName = "manageFactory") protected EntityManag ...