NO.A.0002——Git简史及安装教程/创建本地仓库/提交项目到本地仓库/误删还原
到 2005 年的时候,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区(特别是 Linux的缔造者 Linus Torvalds )不得不吸取教训,只有开发一套属于自己的版本控制系统才不至于重蹈覆辙。他们对新的系统订了若干目标:
- 速度
- 简单的设计
- 对非线性开发模式的强力支持(允许上千个并行开发的分支)
- 完全分布式
- 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)

下图就是标准的集中式版本控制工具管理方式:

集中管理方式在一定程度上看到其他开发人员在干什么,而管理员也可以很轻松掌握每个人的开发权限。
但是相较于其优点而言,集中式版本控制工具缺点很明显:
- 服务器单点故障
- 容错性差
下图就是分布式版本控制工具管理方式:

一般工作流程如下:
1.从远程仓库中克隆 Git 资源作为本地仓库。
2.从本地仓库中checkout代码然后进行代码修改
3.在提交前先将代码提交到暂存区。
4.提交修改。提交到本地仓库。本地仓库中保存修改的各个历史版本。
5.在修改完成后,需要和团队成员共享代码时,可以将代码push到远程仓库。
下图展示了 Git 的工作流程:











- 创建文件夹:Repository repo1
- 右键——>Git GUI Here——>Create New Repository——>指定创建的仓库文件路径E:/GitHub Repository/Repository/repo1——>create——>在repo1下可以看到.git隐藏文件夹(.git就是本地版本库)——>END

- 切到 .git的工作目录下\Repository\repo1——>右键——>Git Bash Here ——>键入:git init——.git本地版本库创建——>END
- 切到 .git的工作目录下\Repository\repo1——>右键——>git在这里创建版本库(tortoisegit)——>带版本库的仓库不要选中:制作纯版本库——>.git本地版本库创建——>END
- 工作区和暂存区:Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。
- 什么是工作区(Working Directory):工作区就是你在电脑里能看到的目录,比如我的reporstory文件夹就是一个工作区。有的同学可能会说repository不是版本库吗怎么是工作区了?其实repository目录是工作区,在这个目录中的“.git”隐藏文件夹才是版本库。这回概念清晰了吧。
- Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
如下图所示:

- 把文件往Git版本库里添加的时候,是分两步执行的:
第一步:是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步:是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
- 因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存的所有修改。
- .git:本地版本库
- repo1:是.git本地版本库的工作目录
- 工作目录下:向本地版本库添加文件;必须在工作目录下。
- 在.git本地版本库下创建文件:hello.txt


- 在.git本地版本库工作目录下——>右键——>Git提交(C)->“master”(图一)——>提交、关闭——>文件上会有对号出现(图二)——>暂存区文件添加到本地版本库中——>END


- 右键——>TortoiseGit(T)——>版本库浏览器——>可以查看到刚才添加的文件Hello.txt——>END

- 修改文件内容——>文件变为!号(说明文件已经修改)——>右键——>Git提交(C)->“master”——>填写日志文件,提交、关闭——>END

- 在Hello.txt文件上右键——>TortoiseGit(T)——>显示日志(图一)——>选中两个文件、右键——>比较版本差异(图二)——>END


- 在git本地版本库工作目录下——>右键删除hello.txt文件——>右键,版本库浏览器——>本地版本库中文件还是存在——>

- 若是在提交前发现误删除了文件:还原文件——>TortoiseGit(T)——>还原——>删除文件还原OK——>

- 右键——>Git提交(C)->“master”——>右键,版本库浏览器——>此刻本地仓库文件彻底删除。(此刻再想还原还原不会来了)——>END

- 在hello2.txt文件上:右键——>TortoiseGit(T)——>删除(D)(本地版本库文件还是存在)——>右键——>Git提交(C)->“master”——>本地版本库删除完成——END
- 在hello3.txt文件上:右键——>TortoiseGit(T)——>删除并保留本地副本(图一)——>右键——>Git提交(C)->“master”——>本地版本库删除完成:本地电脑文件还是被保留下来——END

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
NO.A.0002——Git简史及安装教程/创建本地仓库/提交项目到本地仓库/误删还原的更多相关文章
- Node.js npm基础安装配置&创建第一个VUE项目
使用之前,我们先来明白这几个东西是用来干什么的. node.js: 一种javascript的运行环境,能够使得javascript脱离浏览器运行.Node.js的出现,使得前后端使用同一种语言,统一 ...
- Windows+Git+TortoiseGit+COPSSH 安装教程及问题收集
准备工作: 1. git-1.8.1.2-preview20130201.exe 下载地址: https://code.google.com/p/msysgit/downloads/list 2. C ...
- #Git 详细中文安装教程
Step 1 Information 信息 Please read the following important information before continuing 继续之前,请阅读以下重要 ...
- git Windows终端安装教程
1.下载网址:https://gitforwindows.org/ 2.双击压缩包出现: 3.点击下一步后,选择安装路径: 根据自己的需求选择路径 4.选择安装的组件,建议全选 [每一条解析:] Ad ...
- git创建分支并提交项目
git 创建分支, 切换分支, 合并分支, 删除分支及提交[commit提交到本地仓库push名利提交到远程服务器], 检出[pull], 冲突修改, 本地仓库同步远程服务器[pul和push命令l] ...
- vue-cli安装以及创建一个简单的项目(一)(Node\npm\webpack简单使用)
1.关系介绍 1.简单的说 Node.js 就是运行在服务端的 JavaScript. 2.NPM是随同NodeJS一起安装的包管理工具(新版的nodejs已经集成了npm),能解决NodeJS代码部 ...
- Git本地已有项目关联远程仓库
情况: 本地已有项目 远程有个仓库 目的: 本地项目关联远程仓库 首先要把本地项目变成git管理的,也就是建立一个本地仓库,可以在项目目录下面使用git init命令初始化仓库,初始化成功之后会在仓库 ...
- 初学者对Git的使用安装教程,以及对unknown key type -rsa的解决办法
第一次使用Git,诚惶诚恐. Git在每个电脑上第一次使用必须要配置环境,才能通过SSH秘钥的方式安全稳定的拉取代码! 此文适合对Git一无所知的小白观看,大神勿扰.下面我将讲解一个傻瓜式的Git安装 ...
- Git for Windows安装教程
1.国内直接从官网(http://git-scm.com/download/win)下载比较困难,速度极慢,需要翻墙. 这里提供一个国内的下载站,方便网友下载(https://npm.taobao.o ...
随机推荐
- Helium文档11-WebUI自动化-attach_file上传文件或图片
前言 attach_file关键字根据官方介绍的作用是上传文件 入参介绍 def attach_file(file_path, to=None): """ :param ...
- offer_JZ25
offer_JZ25 题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点.(注意,输 ...
- ES7 - 11新特性总结
es7 1 Array.prototype.includes 之前都是使用indexOf判断,没有返回-1,现在includes更加方便 Includes 方法用来检测数组中是否包含某个元素,返回bo ...
- ThreadLocal使用说明
让变量只能在这个线程内被读写,在其他线程内无法被访问.以键值对存放变量,并继承弱应用,内存随时会被回收,用完要remove不然会内存泄漏,使用的时候直接设置值就可以了,键就是ThreadLocal本身 ...
- c语言创建dll以及使用
0x01. declspec(dllexport)创建导出dll 笔者这边使用vs 2015,但是性质都一样的 新建项目 -> Win32控制台应用程序 -> dll 这时候就创建了一个项 ...
- web worker的介绍和使用
目录 简介 Web Workers的基本概念和使用 Web Workers的分类 worker和main thread之间的数据传输 简介 什么是web worker呢?从名字上就可以看出,web w ...
- PowerDesigner 概念数据模型(CDM)
大 中 小 PowerDesigner 概念数据模型(CDM) 说明 2014-05-07 大数据深... 来源 阅 51 转藏到我的图书馆 微信 分享: QQ空间 QQ好友 新 ...
- Learn day9 粘包\struct用法\hashlib校验\socketserver并发\模块引入\进程\join\守护进程
1.粘包现象 总结 : 导致黏包现象的两种情况 hello,worl d (1) 在发送端,发送数据太快,频繁发送 (2) 在接收端,接收数据太慢,延迟截取 # ### 服务端 import sock ...
- mysql数据库——事务隔离级别
四种隔离级别: 一:READ UNCOMMITTED(未提交读) 事务可以读取其他事务未提交的数据,称为脏读 二:READ COMMITTED(提交读) 一个事务开始时,只能"看见" ...
- python类的封装与继承
封装 关注公众号"轻松学编程"了解更多. 1.概念 面向对象语言的三大特征:封装, 继承, 多态. 广义的封装: 类和函数的定义本身就是封装的体现. 狭义的封装:一个类的某些属性, ...