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. win10应用商店打不开,错误代码0x80131500

    我也突然遇到这个问题,一开始找各种方法也解决不了.然后在外网找到方法. 很多人只是把代理开了,只要关了就可以了.这点不累述,都会提到. 我的win10应用商店有两个错误代码0x80131500和0x8 ...

  2. Git让你从入门到精通,看这一篇就够了

    简介 Git 是什么? Git 是一个开源的分布式版本控制系统. 什么是版本控制? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 什么是分布式版本控制系统? 介绍分布 ...

  3. 了解PID控制

    @2019-03-07 [小记] 了解PID控制 比例 - 积分 - 微分 积分 --- 记忆过去 比例 --- 了解现在 微分 --- 预测未来

  4. 【bfs】抓住那头牛

    [题目] 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫起始位于点N(0≤N≤100000),牛位于点K(0≤K≤100000).农夫有两种移动方式: 1.从X移动到X-1或X+1,每次 ...

  5. A.02.00—功能定义与唤醒—起始

    第一章节主要讲的是模块普通的输入输出,精力及能力有限,仅介绍了一些较为普通的信号,另一些信号留待想了解的人自我探索. 第二章节打算介绍的是功能定义和休眠唤醒相关的内容.也是一些基础内容,对于比较少见或 ...

  6. LVM备份(2)-创建LVM逻辑卷

    懵逼了几天,对LVM快照备份总算有了个比较清晰的认识 总的来说,就是这样: 1.普通分区备份比较困难,需要转化成LVM逻辑卷进行管理 2.在新创建的LVM逻辑卷上进行业务操作,比如建数据库 3.某个时 ...

  7. Linux设备树(三 属性)

    三 属性(property) device_type = "memory"就是一个属性,等号前边是属性,后边是值.节点是一个逻辑上相对独立的实体,属性是用来描述节点特性的,根据需要 ...

  8. GO语言系列(二)- 基本数据类型和操作符

    一.文件名 & 关键字 & 标识符 1.所有go源码以.go结尾 2.标识符以字母或下划线开头,大小写敏感 3._是特殊标识符,用来忽略结果 4.保留关键字 二.Go程序的基本结构 p ...

  9. C++回顾day03---<异常>

    一:传统错误处理机制(C中通过函数返回来处理) int CalcRes(int n, int m, char ch, int& res) { ; switch (ch) { case '+': ...

  10. DirectX11 With Windows SDK--22 立方体映射:静态天空盒的读取与实现

    前言 这一章我们主要学习由6个纹理所构成的立方体映射,以及用它来实现一个静态天空盒. 但是在此之前先要消除两个误区: 认为这一章的天空盒就是简单的在一个超大立方体的六个面内部贴上天空盒纹理: 认为天空 ...