Git的学习之路01 Git的简介、安装和配置
Git简介:
什么是Git?
Git是目前世界上最先进的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。最初由Linus Torvalds编写,用作Linux内核代码的管理。
SVN与Git的最主要的区别?
- SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
- Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。而且Git不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
1、GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。
2、GIT分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录。
3、GIT没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。
4、GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保> 代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
为什么学习Git?
除了你可以使用Git来管理自己的项目之外,还因为越来越多的人使用Github来托管自己的开源项目, 你可以找到适合你的开源项目进行学习,加入到一个团队来提高自己。同时GitHub也可以帮助你找到满意的工作!! 没错,可能有公司看到你托管到GitHub的项目而向你发出offer,在简历中 你的GitHub 可能成为加分项。
Git的安装:
最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑。不过,慢慢地有人把它移植到了Windows上。现在,Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行了。
Git 各平台安装包下载地址为:http://git-scm.com/downloads
在Linux上安装Git:
首先,你可以试着输入git,看看系统有没有安装Git:
$ git
The program 'git' is currently not installed.
You can install it by typin:sudo apt-get install git```
像上面的命令,有很多Linux会友好地告诉你Git没有安装,还会告诉你如何安装Git。
> Git 的工作需要调用 curl,zlib,openssl,expat,libiconv 等库的代码,所以需要先安装这些依赖工具。
在有 yum 的系统上(比如 Fedora)或者有 apt-get 的系统上(比如 Debian 体系),可以用下面的命令安装:
各 Linux 系统可以很简单多使用其安装包管理工具进行安装:
###### Debian/Ubuntu Git 安装命令为:
直接使用一条```sudo apt-get install git```就可以直接完成安装,非常简单。
如果版本过老,要把命令改为```sudo apt-get install git-core```,因为以前有个软件也叫GIT(GNU Interactive Tools),结果Git就只能叫```git-core```
了。由于Git名气实在太大,后来就把GNU Interactive Tools改成```gnuit```
,```git-core```正式改为```git```。
$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext
libz-dev libssl-dev
$ apt-get install git-core
$ git --version
git version 1.8.1.2```
Centos/RedHat 安装命令为:
$ yum install curl-devel expat-devel gettext-devel \
openssl-devel zlib-devel
$ yum -y install git-core
$ git --version
git version 1.7.1```
### 在Windows上安装Git:
- Windows是最烂的开发平台,如果不是开发Windows游戏或者在IE里调试页面,一般不推荐用Windows。不过微软也是有办法安装Git的,Windows下要使用很多Linux/Unix的工具时,需要***Cygwin***这样的模拟环境,Git也一样。***Cygwin***的安装和配置都比较复杂,最好不要折腾了。有大神已经把模拟环境和Git都打包好了,名叫**msysgit**,只需要下载一个单独的exe安装程序,其他什么也不用装,绝对好用。
- ***msysgit***其实就是Windows版的Git,从[https://git-for-windows.github.io](https://git-for-windows.github.io/)下载,然后按默认选项安装即可。安装完成后,就可以使用命令行的 git 工具(已经自带了 **ssh** 客户端)了,另外还有一个图形界面的 Git 项目管理工具。
- 在开始菜单里找到"Git"->"Git Bash",或桌面鼠标右键找到“Git Bash Here”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
### Mac 平台上安装:
在 Mac 平台上安装 Git 最容易的当属使用图形化的 Git 安装工具,下载地址为:
[http://sourceforge.net/projects/git-osx-installer/](http://sourceforge.net/projects/git-osx-installer/)
安装界面如下所示:
![](http:https://img.haomeiwen.com/i2032666/d40326c7cfda03e9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
## Git的配置
Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。
这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:
> - /etc/gitconfig文件:系统中对所有用户都普遍适用的配置。若使用 git config时用 --system选项,读写的就是这个文件。
- ~/.gitconfig文件:用户目录下的配置文件只适用于该用户。若使用 git config
时用 --global选项,读写的就是这个文件。
- 当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置所以 .git/config里的配置会覆盖 /etc/gitconfig中的同名变量。
在 Windows 系统上,Git 会找寻用户主目录下的 .gitconfig 文件。主目录即 $HOME 变量指定的目录,一般都是 C:\Documents and Settings\$USER。
此外,Git 还会尝试找寻 /etc/gitconfig 文件,只不过看当初 Git 装在什么目录,就以此作为根目录来定位。
##### 用户信息
配置个人的用户名称和电子邮件地址: 因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识,你的名字与Email会出现在你的提交记录中。
$ git config --global user.name "你的github用户名"
$ git config --global user.email "你的github注册邮箱"```
注意:
- git config使用--system参数时, Git 会读写/etc/gitconfig文件,该文件含有对系统上所有用户及他们所拥有的仓库都生效的配置值
- git config使用--global参数时,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置. 那么更改的配置文件就是位于该用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。Git 会读写~/.gitconfig文件,该文件含有只适用于该用户的配置值.
- 如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的.git/config 文件里。
- git config使用--local参数时, Git 会读写由用户定义的各个库中Git 目录下的配置文件(.git/config),该文件含有只适用于该Git库的配置值。
以上阐述的三层配置从一般到特殊层层推进,如果定义的值有冲突,以后面层中定义的为准,例如:在.git/config和/etc/gitconfig有冲突会采用.git/config值
文本编辑器
设置Git默认使用的文本编辑器, 一般可能会是 Vi 或者 Vim。如果你喜欢使用Emacs 的话,可以重新设置:$ git config --global core.editor emacs
差异分析工具
还有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff 的话:
$ git config --global merge.tool vimdiff
Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息。当然,自己也可以指定使用自己开发的工具。
查看配置信息
要检查已有的配置信息,可以使用git config --list
命令:
$ git config --list
http.postbuffer=2M
user.name=ScorpioZoes
user.email=ScorpioZoes@test.com```
有时候会看到重复的变量名,那就说明它们来自不同的配置文件(比如 /etc/gitconfig 和 ~/.gitconfig),不过最终 Git 实际采用的是最后一个。
这些配置我们也可以在 **~/.gitconfig** 或 **/etc/gitconfig** 看到,如下所示:
`vim ~/.gitconfig`
显示内容如下所示:
[http]
postBuffer = 2M
[user]
user.name=WakingScorpio
user.email=WakingScorpio@test.com```
也可以直接查阅某个环境变量的设定,只要把特定的名字跟在后面即可,像这样:
$ git config user.name
WakingScorpio```