关于Git和github,相信凡是工作或者学习跟编程擦了点边的人,都早已经耳熟能详。即便不用,但肯定会听人提起,而且一旦被人提起,那多半就是会被交口称赞的。不巧的是,我就是一个对编程有点兴趣,喜欢自己鼓捣编程,另外也曾多次听人说到过SVN、Git的大名。
按照我的惯例,今天这篇文章的背景可以总结为一个现在处于并将长期处于初学状态的非科班码农轻松学会Git的基本使用后记录下来的心得体会……嗯,大概就是这样。当你往下读之前,我有必要强调一下,本文记录的都是基本使用,高大上的用法我也还在摸索中……
本着初学者何必为难初学者的人道主义,你们要是已经会一些基本使用方法了,现在就可以关掉本文,没必要再多浪费时间。
闲话唠完,正文走起。
对写文章这件事来说,提纲是个好东西:
![a61364bdfc127fcc2e66a473a64fe7fd.png](https://i-blog.csdnimg.cn/blog_migrate/c0057b943c367795b386c812b2b8dcb9.jpeg)
作为半小时学会使用Git(一),本文只会讲前三个部分的内容。
一、简介
Git,很多人都知道它是一种分布式版本控制系统。简单来说,就是我们写文章时,每一次润色修改都可以算作一个版本,而通过Git,我们就不必辛苦地将每一个版本都另外为副本一、副本二……Git会帮助我们记住每一个版本,我们只需要一些简单的命令,就能实现版本回退。以上算是讲解了版本控制这四个字,那么分布式又是个什么东西呢?
提到分布式,就不得不与集中式对照着来说了。
下面就以公司开发软件为例大概介绍一下。
先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。很显然,你把这本书借出来的时候,其他人就借不到了。
而分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。【此段论述摘自廖雪峰老师的官方网站】
![5d0017717e04d2f5904e2eab352947f0.png](https://i-blog.csdnimg.cn/blog_migrate/541399b6ca6e64e2e733693f16f19181.jpeg)
以上大概就是两种版本控制系统的模式,集中式中最如雷贯耳的自然就是SVN了……只不过现在感觉还是Git的使用受众更多更广。而关于两种模式其他方面诸如速度、安全性等区别,我由于没有使用,自然也就没有体验,就不在这里多说了。
二、Windows安装Git
概念总是枯燥乏味的,所以接下来,我们直接进入实操吧。
Git的安装其实挺简单的,我将其分为下载安装、检验和初始配置三步。
首先进入官网下载:
![799b30b364e7cdd17c8b85662b9e1bf2.png](https://i-blog.csdnimg.cn/blog_migrate/d30646c219242a18188723234a8a6f99.jpeg)
这一步就和其他软件的下载一样,唯一值得一提的是,官网可能速度很慢甚至出现连接不了的情况。这时候不要慌,你要相信肯定不是官网的问题……所以换个地方下载吧,我建议去腾讯管家软件助手。
下载过后,一路默认选项安装就好。
![71ace02a52c07993173089796d054936.png](https://i-blog.csdnimg.cn/blog_migrate/655acf125dbe73f216c98ab92277c257.jpeg)
出现这页面,就很亲切了对吧……
不过别着急,我们还是需要检验一下安装成功与否:开始菜单中能找到并打开Git Bash,恭喜你,已经成功安装了。
![65ab1b05246accfbd39b178a97130533.png](https://i-blog.csdnimg.cn/blog_migrate/70d22741be94c0101912839626e3f5d4.jpeg)
![8badd541ad9be0746ccd4f3b24630109.png](https://i-blog.csdnimg.cn/blog_migrate/ef3dcfbd4c8b4c1d5ff35f15014656ce.jpeg)
最后一步,也就是初始配置了。简单起见,我们只做必要的姓名和邮箱配置。
git config --global user.name "yourName"
git config --global user.email "yourEmail@email.com"
![de192fabe0072103ea113c38307ae0ed.png](https://i-blog.csdnimg.cn/blog_migrate/46ae894a3b08b2da8171877187c505ce.jpeg)
unix的哲学就是“没有消息就是好消息”,所以若是运行完没有信息出来,不要大惊小怪,这起码说明它暂时还能和你做好朋友-_-|||
三、创建版本库
本文的重头戏,就是创建本地的版本库了。
版本库,英文名叫repository,一般也叫仓库,是本地保存所有修改记录的那么一个地方、一个路径或是一个目录。这个目录里面的所有文件都可以被Git管理,每个文件的修改、删除都能被跟踪,以便在任何你脑子发抽的时候都能追踪历史,或者将其还原……
好了,现在就开始创建吧。
第一步,创建目录:mkdir dirname(强烈建议选择无中文路径,尤其是在Windows环境下)
![f8b6864574383581a80fc1a901ff326d.png](https://i-blog.csdnimg.cn/blog_migrate/45d09024338ecc633d34047e31029901.jpeg)
我的步骤是先切换到想要创建仓库的目录下:cd D://documents……
然后查看当前所处路径:pwd
确认过后创建目录:mkdir py2048
第二步:初始化
![c2d51054f1f5ec0bdf940d262d720d81.png](https://i-blog.csdnimg.cn/blog_migrate/85112bf87f605a8051ed7200b6d5a028.jpeg)
进入目录:cd ./py2048
初始化(可理解为将该目录变成Git可以管理的仓库):git init
当看到如上图所示的提示信息时,就表示初始化成功。
第三步,添加文件
仓库创建好了,自然就得存东西啊。
我们可以利用文件管理器,在上一步创建的路径下添加一份文本文件readme.txt。然后随便写点什么东西,保证它非空。
![181492b24b1559e4e2d8f857756670f3.png](https://i-blog.csdnimg.cn/blog_migrate/70d77268fbdca86219a0b7bf9fd8650e.jpeg)
添加该文件到暂存区:git add readme.txt
可使用命令查看该文件内容:cat readme.txt
![9d0317337a46fb32088a911dfe526f39.png](https://i-blog.csdnimg.cn/blog_migrate/a873b89c188760878d0dfff1ce288ed7.jpeg)
可以看到,文件内容显示不完全,这一点我开始也是懵逼的,以为是编码问题,但是换了几种编码格式依旧如此……最后,我才发现是Windows的记事本有毒,换用notepad++新建一个同样的文本文件,显示就毫无问题。
![112fb424f95dd3cd5c90e6b138a0d8de.png](https://i-blog.csdnimg.cn/blog_migrate/214e0015c20037164c03aa8bd47a645c.jpeg)
到这里,我们只是将文件保存到了暂存区,并没存到版本库。接下来自然是让这份文件存进版本库方便管理:
git commit -m "add readme.txt and readme2.txt "
-m "message"这是对这一次提交的说明。
![dd25a48ffed6c161975570aeb648ffd2.png](https://i-blog.csdnimg.cn/blog_migrate/c70e971f647bc48ab1de48cef774c17d.jpeg)
至此,就将两份文件提交到了版本库了。
这篇文章到此为止,不过既然上面提到了暂存区和版本库,我就在文末简单说一下Git中工作区、暂存区和版本库这三个名词的概念。
![53d210ecc4bd965b0ddb51ded5d730a9.png](https://i-blog.csdnimg.cn/blog_migrate/f945fbfef3f9f256215c9feef553fc3e.jpeg)
这张图最清楚明了了。
当我们用git init命令初始化后,在目录下会出现一个.git的隐藏目录,这个隐藏目录其实就是我们常说的版本库。版本库和工作区是同等地位的,所以说.git隐藏目录的同级目录就是工作区,工作区就是我们修改文件的目录。而版本库又可以分为stage和master,stage就是暂存区,git add命令就是将文件保存到stage中,而master则是自动创建的第一个分支,我喜欢叫它主分支,它则是保存每次修改过后定档的文件。