如果你用过Word文档写过文章,那么你一定会有这样的经历。

我觉得某一段或者某一句写得不够好,但是,删掉之后我可能会后悔把它删掉了,进而又想把删掉的段落找回来,这时,你想到了一个好办法,将每次的修改都作为一个文章版本保存起来,这样虽然能够解决你的问题。但是,随着你的修改次数越来越多,你会发现,电脑桌面上出现了N多个Word副本,这时,你已无法分清每个副本对应的是什么时候作的修改。

于是你想,如果有一个软件,不但能自动帮我记录每次文件的修改,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?

既然有这样的想法,那么你就应该学习一下git。

那什么是git?

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

既然是最先进的,我们当然是要去学好它,掌握好它了。

那么,从该篇博客开始,我将记录git教程系列,作为学习资料提供给大家。

我们先说一个故事吧。

很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。

Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!

你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。

不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。

Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:

Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!

Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

这就是git的诞生史了。

那首先我们来讲一下安装。

git在Linux、Mac、Win下都可以安装。

因为大家普遍都是Windows操作系统,我就以Windows环境为例。

在Windows环境下,我们只需访问https://git-for-windows.github.io网址,即可下载git,然后一路next,安装就完成了。

安装完成后,我们点击开始菜单,找到git,然后打开。



这样就说明git安装成功了。

人在江湖,岂能没有名号,在你使用git之前,要先报家门,否则代码不能提交。

$ git config --global user.name #你是谁
$ git config --global user.email #怎么联系你



因为我已经提交过我的用户名和邮箱了,所以,我这里打印了我的信息。从这里我们知道,这个设置用户名和邮箱的指令同时也是查看信息的指令吧。

那么接下来通过一次版本提交我们来感受一下,git操作其实没有什么可说的,重要的是要记住git指令及其每条指令的含义。

我们把路径切换到桌面

cd Desktop

然后在桌面新建一个文件夹,该文件夹就是我们的工作目录

mkdir rrd

然后切换到工作目录

cd rrd

我们在工作目录中初始化一个代码仓库

git init

有了代码仓库之后,我们就可以在工作目录进行工作了。

在目录中创建一个index.txt文件,并编写hello git内容。

cat >> index.txt

输入cat指令创建文件回车后,会等待你输入文件内容,输完ctrl+d保存退出。

我们输入

hello git

然后,我们查看一下工作状态

git status



红色框线内的意思是说提交时除了未跟踪的文件之外没有添加任何内容(使用“git add”进行跟踪)。

说明我们的index.txt文件并没有被git跟踪,我们使用git add对文件进行跟踪。

git add index.txt

该条指令可以对index.txt进行跟踪,但是,文件如果非常多,这样写显然就很繁琐了,所以,我们可以使用

git add .

将当前目录的所有文件进行跟踪。

然后,我们将该文件提交到代码仓库。

git commit -m "提交"

-m是注释的意思,引号内写明你对此次提交的注释信息。

到这里,我们就完成了一次版本管理。

注意,在git中有一个暂存区的概念,可以先不用知道暂存区是什么,你只需要知道,我们add文件之后,文件是会先放在暂存区,此时文件并没有被提交,所以你可以随时撤回你放入暂存区的文件,当你commit之后,文件才会从暂存区被提交到代码仓库。

我们现在对文件进行修改

vi index.txt

然后输入i、o或者a都可以进入vim的编辑模式,进入编辑模式后,对文件内容进行一些简单的修改,然后按esc退出编辑模式,进入命令模式,此时,输入 :q! 即可退出编辑器,但是修改不保存,输入 :wq 即可保存内容并退出,然后输入

git status



git会提示你的工作区内容被修改了,这时我们输入

git add .
git commit -m "再次提交"

我们的修改就会被同步到我们的代码仓库中。

接下来演示一下删除。

我们再次创建一个文件并将其提交到代码仓库,这个相信已经难不倒你们了,我直接贴出所有步骤。

cat >> demo.txt
git add .
git commit -m"第三次提交"

此时我们输入git status查看一下状态。



工作区是空的,说明我们的工作区和代码仓库已经同步了。

然后,我们把刚才创建的文件进行删除。

git rm demo.txt

再次输入git status查看状态。



此时git就发现我们删除了文件,注意,现在如果想将工作区与代码仓库进行同步,不需要add了,而是直接输入

git commit -m "第四次提交"

这样,代码仓库的demo.txt文件也就被删除了。

如果你自己手动删除文件,你是需要进行add操作的,但是,如果你使用git rm命令进行文件删除,git会帮助你直接把操作放入暂存区,所以,你可以直接提交你的删除操作。

版本管理·玩转git(快速入门git)的更多相关文章

  1. Git 快速入门--Git 基础

    Git 快速入门 Git 基础 那么,简单地说,Git 究竟是怎样的一个系统呢? 请注意接下来的内容非常重要,若你理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余. 在开始学习 G ...

  2. Git快速入门进阶篇

    本文接着Git快速入门篇,继续探讨Git在管理项目中的一些应用. 远程仓库的使用 查看远程仓库 查看你已经配置的远程仓库服务器,可以运行 git remote 命令.指定选项 -v,会显示需要读写远程 ...

  3. git快速入门 push/clone/reset/merge/切换分支全都有

    本文介绍git快速入门,从安装/创建init / 发布push/版本回退reset / branch分支切换/合并分支merge 这些基本的操作都有涉及,方便新人快速入手,有需要的朋友mark一下.首 ...

  4. Git快速入门

    如果你不想看长篇的Git教程,想快速了解Git的使用,那么本文可能会对你入门Git有所帮助.由于笔者用的是Windows系统,所以本文只写Git在Windows上的使用. 一.Git安装 去Git官网 ...

  5. Git快速入门和常用命令

    一.快速入门 本地初始化一个项目 首先,你需要执行下面两条命令,作为 git 的基础配置,作用是告诉 git 你是谁,你输入的信息将出现在你创建的提交中. git config --global us ...

  6. git 快速入门及常用命令

    身为技术人员,都知道Git是干嘛的.从服务端角度它是代码仓库,可以多人协作.版本控制.高效处理大型或小型项目所有内容:从客户端讲,它能够方便管理本地分支.且与服务端代码的同步,从拉取.合并.提交等等管 ...

  7. Git——快速安装Git及初始化配置【二】

    文档 https://git-scm.com/book/zh/v2 下载 mac https://git-scm.com/download/mac Linux https://git-scm.com/ ...

  8. git 快速入门

    介绍git的基本知识.文件状态.工作区域以及一个简单的操作示例. 目录 1. git相关介绍 2. 文件状态与工作区域 3. 快速使用 1. git相关介绍 1.1 git.github.gitlab ...

  9. git 快速入门(二)

    一.引子 git代码托管的优秀工具之一, 其工作原理和svn截然不同.一旦拥有主干master分支权限, 只要在本地拉取主干分支, 可以随时随地切换分支. 它拥有众多优点,eg :支持在断网的情况下, ...

随机推荐

  1. 开源一个好用的nodejs访问mysql类库

    一.背景问题 自nodejs诞生以来出现了一大批的web框架如express koa2 egg等等,前端可以不再依赖后端可以自己控制服务端的逻辑.原来的后端开发同学的阵地前端如今同样也写的风生水起,撸 ...

  2. java高并发系列 - 第16天:JUC中等待多线程完成的工具类CountDownLatch,必备技能

    这是java高并发系列第16篇文章. 本篇内容 介绍CountDownLatch及使用场景 提供几个示例介绍CountDownLatch的使用 手写一个并行处理任务的工具类 假如有这样一个需求,当我们 ...

  3. C# 针对特定的条件进行锁操作,不用lock,而是mutex

    背景:用户领取优惠券,同一个用户需要加锁验证是否已经领取,不同用户则可以同时领取. 上代码示例: 1.创建Person类 /// <summary> /// Person类 /// < ...

  4. hdu6383 p1m2(二分答案)

    p1m2 题目传送门 解题思路 因为x都是非负数,且每一次操作其实就是把总和减少了1,所以可以得出最后都可以到达稳定.最后稳定的数的下界是0,最大也不会超过其初始数的最大值,所以可以用二分答案来求解. ...

  5. Python_Day1_人人都爱列表

    列表由一系列按特定顺序排列的元素组成.你可以创建包含字母表中所有字母.数字0~9或 所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系. 鉴于列表通常包含多个元素,给列 ...

  6. Linux小火车和流星雨

    一.流星雨 [root@localhost ~]# wget https://jaist.dl.sourceforge.net/project/cmatrix/cmatrix/1.2a/cmatrix ...

  7. sql上传木马

    第十周笔记—SQLmap和sql注入上传木马 目录 第十周笔记—SQLmap和sql注入上传木马 SQL注入 上传木马 SQLmap 六大模块 命令 参数 三种请求方式 取得系统shell sqlma ...

  8. python Django编写接口并用Jmeter测试

    一.环境准备 python3.6.7 Pycharm 二.创建项目 我这里是在Django项目中新建了个APP,目录结构如下图所示: 那么怎么在已有的Django项目中新建APP并进行配置呢: 2.1 ...

  9. 这 3 个 Set 集合的实现有点简单,那来做个总结吧

    Set 接口是 Java Collections Framework 中的一员,它的特点是:不能包含重复的元素,允许且最多只有一个 null 元素.Java 中有三个常用的 Set 实现类: Hash ...

  10. Windows上切换java8和java11

    Windows上安装了java8和java11,时不时要切换,于是思考写行命令解决.思路是修改java_home变量.我的java_home变量是设置在系统级别的. 修改环境变量有2个命令,set和s ...