在开发过程中,经常会遇到一个项目由多人合力完成这种情况,每个人负责其中一个模块。项目开发过程中为了确保代码的可追溯,我们引入了版本控制概念,每个人修改了什么代码或提交了什么代码都能够跟踪记录。现在流行的版本控制主要有:集中式版本控制(SVN)和分布式版本控制(GIT)。本文将介绍Git的17条基本用法。
1.初始化Git仓库
Git仓库分为两种类型:一种是存放在服务器上面的裸仓库,里面没有保存文件,只是存放.git的内容;一种是标准仓库,会在项目根目录下创建一个.git目录。
gitinit#创建标准仓库,在项目根目录下创建一个隐藏的.git
文件夹
gitinit–bare#创建一个裸仓库,裸仓库只有.git目录内容,
而没有工作区域,一般用于在共享服务器上面创建。
2.查看当前Git配置
Git配置信息分成三个级别,分别存放在三个不同的地方。
一个是系统级别的配置文件,系统基本配置文件存放在Git的安装目录中。
一个是用户级别配置文件,用户级别配置文件存放在当前用户目录下的.gitconfig文件内。
一个是项目级别配置文件,项目级别的配置文件会存放在.git目录的config文件中。使用gitconfig–list显示的Git配置信息,是从系统级配置?用户级配置?项目级配置一层层叠加显示出来的,当遇到同项不同内容时以低级的配置为准,如图1至图3所示。
gitconfig–list#显示当前Git配置信息
gitconfig–system–list#显示系统级别Git配置信息
cat.git/config#显示项目配置文件
cat~/.gitconfig#显示用户级别配置信息
图1
图2
图3
3.配置当前用户名和邮箱
前面我们说过,用Git进行版本控制与集中式版本控制不同,集中版本控制需要验证用户信息后才能提交代码,这样可以识别出谁提交了代码;而分布式版本控制的所有文件都保存在本地磁盘中,当提交代码的时候,需要配置一个用户信息才能被Git执行,在团体合作开发的时候用于识别文件是谁提交的,但这个识别并没有验证用户的真伪,如图4所示。
图4
gitconfig–globaluser.name“用户名”#在用户级配置上设置用户名
gitconfig–globaluser.email“用户邮箱”#在用户级配置上设置邮箱
如图5所示。
图5
注意:在用户级别配置上设置用户名和邮箱信息,应避免如下情形,假设开发用的电脑为多人使用,并且有一个用户忘记给项目设置用户信息,这时Git会把用户信息默认设置为系统级别的信息,而不给出任何提示。
4.克隆仓库
克隆仓库是从远程服务器上拉取一个完整的仓库到本地磁盘,这样做的好处在于每个人都有一个完整的代码库,避免把鸡蛋放在同一个篮子里。但相对的,每个人都有一个完整仓库,对代码的防泄露又是一个问题。
gitclone#从一个远程Git仓库中克隆到本地磁盘
注意:Git支持URL传输协议:本地协议(Local)、HTTP协议、SSH(SecureShell)协议、FTP协议、Git协议。
(1)本地协议。
本地协议(Localprotocol),使用的是FileProtocol(本地文件传输协议),主要用于访问本地计算机中的文件,使用file://文件路径访问。所以远程版本库就是硬盘内的另一个目录。
优点:
基于文件系统的版本库的优点是简单,并且直接使用了现有的文件权限和网络访问权限。如果你的团队已经有共享文件系统,那么建立版本库会十分容易。只需像设置其他共享目录一样,把一个裸版本库的副本放到大家都可以访问的路径,并设置好读/写权限就可以了。这也是快速从别人的工作目录中拉取更新的方法。如果你和别人一起合作一个项目,他想让你从版本库中拉取更新时,运行类似gitpull/home/john/project的命令比推送到服务再取回要简单得多。
缺点:
这种方法的缺点是,通常共享文件系统比较难配置,并且不方便从多个位置访问。如果你想从家里推送内容,则必须先挂载一个远程磁盘,与网络连接的访问方式相比,配置不方便,速度也慢。值得一提的是,如果你使用的是类似于共享挂载的文件系统,那么这个方法也不一定是最快的。访问本地版本库的速度与访问数据的速度是一样的。在同一个服务器上,如果允许Git访问本地硬盘,则一般来说,通过NFS访问版本库的速度要慢于通过SSH访问。
这个协议并不能使仓库避免意外的损坏。每一个用户都有“远程”目录的完整shell权限,我们无法阻止他们修改或删除Git内部文件或损坏仓库。
(2)HTTP协议。
Git通过HTTP通信有两种模式。在Git1.6.6版本之前只有一个方式可用,十分简单并且通常是只读模式的。Git1.6.6版本引入了一种新的更智能的协议,让Git可以像通过SSH那样智能地协商和传输数据。之后几年,这个新的HTTP协议因为其简单、智能变得十分流行。新版本的HTTP协议一般被称为“智能”HTTP协议,旧版本的一般被称为“哑”HTTP协议。我们先了解一下“智能”HTTP协议。
智能(Smart)HTTP协议。
智能HTTP协议的运行方式和SSH协议及Git协议类似,只是运行在标准的HTTP/S端口上,并且可以使用各种HTTP验证机制,这意味着使用起来要比SSH协议简单得多。比如可以使用HTTP协议的用户名/密码的基础授权,免去设置SSH公钥。
智能HTTP协议或许已经是最流行的使用Git的方式了,它既支持像git://协议一样设置匿名服务,也可以像SSH协议一样提供传输时的授权和加密。而且只用一个URL就可以做到,不必为不同的需求设置不同的URL。如果你要推送到一个需要授权的服务器上(一般来讲都需要),那么服务器会提示你输入用户名和密码。从服务器获取数据时也是如此。
哑(Dumb)HTTP协议。
如果服务器没有提供智能HTTP协议的服务,则Git客户端会尝试使用更简单的哑HTTP协议。在哑HTTP协议里,Web服务器仅把裸版本库当作普通文件来对待,提供文件服务。哑HTTP协议的优美之处在于设置起来简单。基本只需把一个裸版本库放在HTTP根目录上,设置一个叫作post-update的挂钩就可以了。此时,只要能访问Web服务器上你的版本库,就可以克隆你的版本库。下面是设置从HTTP访问版本库的方法。
cd/var/
转载请注明:http://www.0431gb208.com/sjszjzl/2042.html