NO.A.0002——Git简史及安装教程/创建本地仓库/提交项目到本地仓库/误删还原
一、Git简史及同类产品对比:
1、git简史:
同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护代码。
到 2005 年的时候,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区(特别是 Linux的缔造者 Linus Torvalds )不得不吸取教训,只有开发一套属于自己的版本控制系统才不至于重蹈覆辙。他们对新的系统订了若干目标:
- 速度
- 简单的设计
- 对非线性开发模式的强力支持(允许上千个并行开发的分支)
- 完全分布式
- 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
2、git和SVN对比:
2.1、SVN:SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就郁闷了。

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

集中管理方式在一定程度上看到其他开发人员在干什么,而管理员也可以很轻松掌握每个人的开发权限。
但是相较于其优点而言,集中式版本控制工具缺点很明显:
- 服务器单点故障
- 容错性差
2.2、Git:Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
下图就是分布式版本控制工具管理方式:

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

二、Git安装教程
1、下载Git安装程序包:

2、安装Git:
安装Git程序包:

右键——>下一步——>安装完成——>右键打开Git Bash Here——>git --version:查看Git版本——>END


3、安装TortoiseGit

安装TortoiseGit——>右键下一步——>OpenSSH——>END

启动配置——>语言(后期再更改,默认English)——>指定git安装路径——>设置邮箱——>END

右键——>可以看到TortoiseGit的快捷启动图标

4、安装中文语言包:

右键程序包——>下一步——>安装完成——>右键——>TortoiseGit——>settings——>Language:中文(简体)(中国)——>应用——>确定——>END

三、Git配置使用:创建本地版本库,并将项目提交到本地仓库:
1、配置本地版本库:三种方式:
- 创建文件夹: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
2、本地版本库中添加项目:
- 工作区和暂存区: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分支上提交更改。你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存的所有修改。
3、向本地仓库添加文件:
- .git:本地版本库
- repo1:是.git本地版本库的工作目录
- 工作目录下:向本地版本库添加文件;必须在工作目录下。
3.1、添加文件到本地版本库的stage暂存区中:
- 在.git本地版本库下创建文件:hello.txt
hello.txt上右键——>TortoiseGit——>添加——>确定(图一)(目前只是把文件添加到暂存区)——>END


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

图一

图二
3.3、查看本地仓库有什么内容:
- 右键——>TortoiseGit(T)——>版本库浏览器——>可以查看到刚才添加的文件Hello.txt——>END

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

3.5、查看文件提交历史记录及更改的内容,比较版本差异:
- 在Hello.txt文件上右键——>TortoiseGit(T)——>显示日志(图一)——>选中两个文件、右键——>比较版本差异(图二)——>END

图一

图二
4、删除本地仓库中的文件,误删还原:
方法一:
创建一个文件hello1.txt并添加到本地版本库中:
- 在git本地版本库工作目录下——>右键删除hello.txt文件——>右键,版本库浏览器——>本地版本库中文件还是存在——>

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

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

方法二:
创建一个文件hello2.txt并添加到本地版本库中:
- 在hello2.txt文件上:右键——>TortoiseGit(T)——>删除(D)(本地版本库文件还是存在)——>右键——>Git提交(C)->“master”——>本地版本库删除完成——END
方法三:
删除并保留副本:创建一个文件hello3.txt并添加到本地版本库中:
- 在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
——W.S.Landor
<wiz_marker id="wiz-painter-root" style="">
分类:
yqv002-bookmarks
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」