1、Git介绍
Git 是一款免费的、开源的、分布式的版本控制系统。旨在快速高效地处理无论规模大小的任何软件工程。
每一个 Git克隆 都是一个完整的文件库,含有全部历史记录和修订追踪能力,不依赖于网络连接或中心服务器。其最大特色就是“分支”及“合并”操作非常快速、简便。
2、Git和Svn的区别
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
3、Git安装
1)在 Linux 上安装
如果要在 Linux 上安装预编译好的 Git 二进制安装包,可以直接用系统提供的包管理工具。在 Fedora 上用 yum安装:
$ yum install git-core
在 Ubuntu 这类 Debian 体系的系统上,可以用 apt-get 安装:
$ apt-get install git
2)在 Mac 上安装
在 Mac 上安装 Git 有两种方式。最容易的当属使用图形化的 Git 安装工具,界面如图 1-7,下载地址在:
http://code.google.com/p/git-osx-installer
另一种是通过 MacPorts (http://www.macports.org
)安装。如果已经装好了 MacPorts,用下面的命令安装 Git:
$ sudo port install git-core +svn +doc +bash_completion +gitweb
这种方式就不需要再自己安装依赖库了,Macports 会帮你搞定这些麻烦事。一般上面列出的安装选项已经够用,要是你想用 Git 连接Subversion 的代码仓库,还可以加上 +svn 选项,具体将在第八章作介绍。(译注:还有一种是使用homebrew(https://github.com/mxcl/homebrew
):brewinstall git
)
3)在 Windows 上安装
在 Windows 上安装 Git 同样轻松,有个叫做 msysGit 的项目提供了安装包,可以到 GitHub 的页面上下载 exe安装文件并运行:
http://msysgit.github.com/
完成安装之后,就可以使用命令行的 git
工具(已经自带了ssh 客户端)了,另外还有一个图形界面的 Git 项目管理工具。
4、Git本地仓库使用
1)初始化
git init
cd到你本地的工程目录,初始git使用环境,当前目录下会创建一个.git目录。
我这是之前init过了,所以会提示reinit。
2)添加文件到版本库
git add [file/dir]
这样,把文件添加到git本地管理目录中,这类似Svn的add操作,实际上,还没有提交到本地管理仓库。利用
git status
通过git status可以看到,刚才的添加操作,对于本地仓库的文件有没有什么变化?
下一步,需要把readme.txt添加到本地仓库中去,利用:
git commit -m ‘你的注释说明‘
这样,就把文件添加到了本地Git仓库了。
当然,你可以再运行git status,看一下,还有没有没提交的代码。现在本地仓库的提交已完成,下节会讲到如何把本地仓库和远程Github仓库相关联。
5、Git远程仓库使用
先注册github账号,由于你的本地Git仓库和github仓库之间的传输是通过SSH加密的,所以需要一点设置:
1)创建SSH Key
在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果有的话,直接跳过此如下命令,如果没有的话,打开命令行,输入如下命令:
ssh -keygen -t rsa –C “[email protected]”
由于我本地此前运行过一次,所以本地有,如下所示:
本人是记不得路径的(建议可以安装everything这个软件,找文件非常方便)
登录github,打开“settings”中的SSH Keys页面,然后点击“Add SSH Key”,填上任意title,在Key文本框里黏贴github_rsa.pub文件的内容。
2)添加远程仓库
我们已经在本地创建了一个Git仓库后,又想在github创建一个Git仓库,并且希望这两个仓库进行远程同步,这样github的仓库可以作为备份,又可以其他人通过该仓库来协作。
点击”Create repository“,便创建了一个远程仓库。
3)关联本地Git仓库
目前,在GitHub上的这个test
仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
现在,我们根据GitHub的提示,在本地仓库下运行命令:
git remote add origin https://github.com/commandow/LeetCode.git
如果提示:
提示出错信息:fatal: remote origin already exists.
找到你的github的安装路径,我的是C:\Users\Administrator\AppData\Local\GitHub\PortableGit_054f2e797ebafd44a30203088cd3d58663c627ef\etc
找到一个名为gitconfig的文件,打开它把里面的[remote "origin"]和下面对应的几行删掉即可。
4)提交本地代码到远程仓库
git push –u origin master
我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令(不用加-u)。
但是敲入命令后,出现如下问题。
原因是:在Github新建目录时,同时选择了创建一个readme.txt,这样造成了远程仓库和本地仓库版本不一致。
解决办法:
git pull [remote_path] master
相当于把远程目录拉下做一个代码版本合并的操作。
Ok,至此,整个工程就添加上去了