Git 是一款免费的、开源的、分布式的版本控制系统。旨在快速高效地处理不管规模大小的任何软件工程。git
每个 Git克隆 都是一个完整的文件库,含有所有历史记录和修订追踪能力,不依赖于网络链接或中心服务器。其最大特点就是“分支”及“合并”操做很是快速、简便。github
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是本身的电脑,因此首先要从中央服务器哪里获得最新的版本,而后干活,干完后,须要把本身作完的活推送到中央服务器。集中式版本控制系统是必须联网才能工做,若是在局域网还能够,带宽够大,速度够快,若是在互联网下,若是网速慢的话,就纳闷了。web
Git是分布式版本控制系统,那么它就没有中央服务器的,每一个人的电脑就是一个完整的版本库,这样,工做的时候就不须要联网了,由于版本都是在本身的电脑上。既然每一个人的电脑都有一个完整的版本库,那多我的如何协做呢?好比说本身在电脑上改了文件A,其余人也在电脑上改了文件A,这时,大家两之间只需把各自的修改推送给对方,就能够互相看到对方的修改了。bash
若是要在 Linux 上安装预编译好的 Git 二进制安装包,能够直接用系统提供的包管理工具。在 Fedora 上用 yum安装:服务器
$ yum install git-core
在 Ubuntu 这类 Debian 体系的系统上,能够用 apt-get 安装:网络
$ apt-get install git
在 Mac 上安装 Git 有两种方式。最容易的当属使用图形化的 Git 安装工具,界面如图 1-7,下载地址在:ssh
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
)svn
在 Windows 上安装 Git 一样轻松,有个叫作 msysGit 的项目提供了安装包,能够到 GitHub 的页面上下载 exe安装文件并运行:工具
http://msysgit.github.com/
完成安装以后,就可使用命令行的 git
工具(已经自带了ssh 客户端)了,另外还有一个图形界面的 Git 项目管理工具。
git init
cd到你本地的工程目录,初始git使用环境,当前目录下会建立一个.git目录。
我这是以前init过了,因此会提示reinit。
git add [file/dir]
这样,把文件添加到git本地管理目录中,这相似Svn的add操做,实际上,尚未提交到本地管理仓库。利用
git status
经过git status能够看到,刚才的添加操做,对于本地仓库的文件有没有什么变化?
下一步,须要把readme.txt添加到本地仓库中去,利用:
git commit -m '你的注释说明'
这样,就把文件添加到了本地Git仓库了。
固然,你能够再运行git status,看一下,还有没有没提交的代码。如今本地仓库的提交已完成,下节会讲到如何把本地仓库和远程Github仓库相关联。
先注册github帐号,因为你的本地Git仓库和github仓库之间的传输是经过SSH加密的,因此须要一点设置:
在用户主目录下,看看有没有.ssh目录,若是有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,若是有的话,直接跳过此以下命令,若是没有的话,打开命令行,输入以下命令:
ssh -keygen -t rsa –C “youremail@example.com”
因为我本地此前运行过一次,因此本地有,以下所示:
本人是记不得路径的(建议能够安装everything这个软件,找文件很是方便)
登陆github,打开“settings”中的SSH Keys页面,而后点击“Add SSH Key”,填上任意title,在Key文本框里黏贴github_rsa.pub文件的内容。
咱们已经在本地建立了一个Git仓库后,又想在github建立一个Git仓库,而且但愿这两个仓库进行远程同步,这样github的仓库能够做为备份,又能够其余人经过该仓库来协做。
点击”Create repository“,便建立了一个远程仓库。
目前,在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"]和下面对应的几行删掉便可。
git push –u origin master
咱们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在之后的推送或者拉取时就能够简化命令(不用加-u)。
可是敲入命令后,出现以下问题。
缘由是:在Github新建目录时,同时选择了建立一个readme.txt,这样形成了远程仓库和本地仓库版本不一致。
解决办法:
git pull [remote_path] master
至关于把远程目录拉下作一个代码版本合并的操做。
Ok,至此,整个工程就添加上去了