本文参考了廖雪峰写的Git教程,详情可查看:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374385852170d9c7adf13c30429b9660d0eb689dd43a000
Git是一个分布式版本控制系统。
什么是版本控制系统?
版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了已录下来。每一次文件的改变,文件的版本号都将增加。除了记录版本变更外,版本控制的另一个重要功能是并行开发。软件开发往往是多人协同作业,版本控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高协同开发的效率。并行开发中最常见的不同版本软件的错误(Bug)修正问题也可以通过版本控制中分支与合并的方法有效地解决。
这个软件用起来就应该像这个样子,能记录每次文件的改动:
集中式VS分布式
先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库。若想多人合作,比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
在Linux上安装Git
$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
在Windows上使用Git,可以从Git官网直接下载安装程序,然后按默认选项安装即可。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功
安装图形化接口
安装TortoiseGit ,Windows上Git的图形化接口。
打开官网,选择合适的版本下载安装即可。
在电脑打开一个目录,点击鼠标右键,就可以看到各种Git命令,稍后我们来介绍如何使用。
版本库
版本库又名仓库,英文名repository,可以理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
使用TortoiseGit 创建版本库
选择一个目录,空白处点击右键出现以下菜单,创建仓库:
提示创建了一个空仓库:
可以发现当前目录下多了一个.git的目录,,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
把文件添加到版本库
Git一个重要的功能就是主要的功能就是追踪文件的变更,所以每修改一个版本,就需要commit一次,Git会进行保存,之后还可以查看每次的修改与记录。
将想要保存的文件放入仓库中:
右键选择Git Commit->"master"
在message填写更改描述,勾选要commit的文件,然后点击OK。
提交成功,第一次的修改版本也就保存好了。
在这里明确一下,所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化。Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的。
可对文件进行修改,并提交多个版本。
查看日志
可使用log功能查看历史记录
在日志中,文件更改的信息,都可以查看。
使用Reflog可还原到相应版本。
Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。
你肯定会想,至少需要两台机器才能玩远程库不是?但是我只有一台电脑,怎么玩?
其实一台电脑上也是可以克隆多个版本库的,只要不在同一个目录下。不过,现实生活中是不会有人这么傻的在一台电脑上搞几个远程库玩,因为一台电脑上搞几个远程库完全没有意义,而且硬盘挂了会导致所有库都挂掉。
实际情况往往是这样,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。
完全可以自己搭建一台运行Git的服务器,不过现阶段,为了学Git先搭个服务器绝对是小题大作。好在这个世界上有个叫GitHub的神奇的网站,从名字就可以看出,这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。
Clone远程仓库到本地
在GitHub上创建一个仓库
右键GitClone
将刚才远程仓库的URL复制下来
发布文件到远程仓库
在本地仓库中放入文件,并进行提交,右键-->tortoiseGit-->push即可发布
可以发现远程仓库中已经有你传入的文件
Git还有个特别好用的功能,分支。
发现问题:你代码写了很多,运行OK;但是突然想加个新功能进去,这个功能你也不知道能否正常运行,而且修改过程中,除了新加代码和文件进去,还会修改以前的代码。要是万一失败,修改回来也是一种很麻烦的事情。或者多人合作,每个人修改一部分或同一部分,不知道该采用哪一部分,不能盲目的进行合并。这种时候很多人就用备份方式。
Git的处理方式:当你想加一个新功能进去的时候,你可以新建一个分支,例如名字叫newfunction,然后在分支中把新功能加上去,如果OK,将代码合并到master分支上,如果新功能失败,切换回master分支上来,在newfunction写的代码,又全看不到了。
新建一个分支,右键-->tortoiseGit-->Create Branch
右键,你会发现当前的分支为你新建的newfunction分支了