Git历险记(一):简介
来源:互联网 发布:淘宝买牛仔裤店铺推荐 编辑:程序博客网 时间:2024/04/28 12:51
- 转载自: http://liuhui998.com/2011/01/21/git-adventures-1/
- Git历险记(一)
【编者按】作为分布式版本控制系统的重要 代表——Git已经为越来越多的人所认识,它相对于我们熟悉的CVS、SVN甚至同时分布式控制系统的Mercurial,有哪些优势和不足呢。这次 InfoQ中文站有幸邀请到《Git Community Book》的译者刘辉,在InfoQ开辟《Git历险记》专栏,分享他使用Git的经验,以及他对Git的看法。
Git是Linus.Torvald为了管理Linux内核发起并开发的一个开源分布式版本控件系统(DVCS)。从2002年起,Linux 内核一直使用BitKeeper来进行版本管理,但是在2005年BitKeeper和Linux 内核开源社区的合作关系结束,BitKeeper再也不能免费使用了,这迫使Linus决定开发一个开源界自已的版本控制系统。
传统的SVN、CVS 等版本控制系统,只有一个仓库(repository),用户必须要连上这个仓库才能开始提交;而Git之类的分布式版本控制系统(当然也还包括 BitKeeper、Mercurial等 等),它的每个工作目录都包含一个完整的仓库,它们可以支持离线工作,先把工作提交到本地仓库后再提交上远程的服务器上的仓库里。分布式的处理也让开发更 为便捷,开发人员可以很方便的在本地创建分支来进行日常开发,每个人的本地仓库都是平等且独立,不会因为你的本地提交而直接影响别人。
老实说,Git的速度是我用的版本控制系统中最快的(SVN Mercurial Git)。我这里说的速度,包括本地提交(commit)、本地签出(checkout)、提交到远程仓库(git push)和从远程仓库获取(git fetch ,git pull);它的本地操作速度和本地文件系统在一个级别,远程仓库的操作速度和SFTP文件传输在一个级别。这当然和Git的内部实现机制有关,这里就不 多展开了,有兴趣的朋友可以看一下这里:Git is the next Unix。
我们在学一门新的语言时,往往是从一个“hello world” 程序开始的,那么Git历程也就从一个“hello Git”开始吧。
在这里假设各位同学的电脑都装好了Git,如果没有装好,可以先看一下这里(安装Git)。当然,后面的章节我会专门讲安装可能会碰到的问题。
我们首先打开Git的命令行:windows下是点击“Git Bash 快捷方式”;Linux或是Unix like平台的话就直接打开命令行界面就可以了。
备注:$符号后面的字符串代表的是命令行输入;命令行输入后的以#开始的黑体字符串代表注释;其它的部分则是命令行输出。
我们先用建一个仓库吧:
好的,前面的三行命令就建立了一个本地的Git仓库。这个仓库现在是一个空的仓库。
我们在命令行下执行:
现在就让我们在这个仓库里添加点内容吧。
好的,文件即然被暂存到暂存区中,我们现在就可以把它提交到仓库里面去:)
现在你执行一下git log 命令就会看到刚才的提交记录
“8223db3b064a9826375041c8fea020cb2e3b17d1”这一串字符就是我们这次创建的提交的名字。看起来是不是很 熟,如果经常用电驴的朋友就会发现它就是和电驴里内容标识符一样,都是SHA1串。Git通过对提交内容进行 SHA1 Hash运算,得到它们的SHA1串值,作为每个提交的唯一标识。根据一般的密码学原理来说,如果两个提交的内容不相同,那么它们的名字就不会相同;反 之,如果它们的名字相同,就意味着它们的内容也相同。
现在我想改一下仓库里文件的内容,现提交到仓库中去
OK,即然我们修改了仓库里被提交的文件,那么我想看一下我们
到底改了哪些地方,再决定是否提交。
很好,正如我们所愿,我们只是在readme.txt的最后一行添加了一行“Git is Cool”。
好的,我们现在再把 readme.txt放到暂存区里:
我们现在看一下仓库的状态:
可以提交了:
再看一下新的日志:
“45ff89198f08365bff32364034aed98126009e44” 这个就是我们刚才提交修改时创建的提交。
大家这么一路看过来,是不是有点糊涂了。不过没有关系,如果你的电脑装了Git,那么你把上面的这些命令全部执行一下遍就会对它有感性的认识了。
下面的的章节,我会讲一下如何在windows和Linux安装配置Git,以及需要注意的问题:)
参考
GitCommunityBook 中文版
ProGit 中文版
Git is the next Unix
本文已经首发于InfoQ中文站,版权所有,原文为《Git历险记(一)》,如需转载,请务必附带本声明,谢谢。
InfoQ中文站是一个面向中高端技术人员的在线独立社区,为Java、.NET、Ruby、SOA、敏捷、架构等领域提供及时而有深度的资讯、高端技术大会如QCon 、线下技术交流活动QClub、免费迷你书下载如《架构师》等。
- Git历险记(一):简介
- Git 历险记(一)
- Git历险记(一)
- Git历险记(一)
- git 历险记(一)
- Git历险记(一)
- Git历险记(一)
- Git历险记(二)
- Git历险记(三)
- Git历险记(四)
- Git历险记(五)
- Docker历险记(一)
- Git历险记
- Git历险记
- git 历险记
- Git 历险记
- Git教程(一)简介
- 工具简介(一)--Git
- 读 Beginning Android Games 2nd Edition (十三) "Nom先生"游戏设计
- 基于STC单片机的排队管理系统的设计
- 插入查询
- cron表达式
- IEC62056协议栈的浅析与实现(连载/第二章节)
- Git历险记(一):简介
- ch.ethz.ganymed包ganymed-ssh2的使用
- Java中ArrayList类的用法
- Windows网络编程之面向非连接的Socket编程
- 函数指针变量和指针型函数
- 马云与周星驰"巅峰对话":我们都不是死跑龙套的
- 粤嵌教你从C轻松到C++(一)
- 组合数求模总结
- 好用的性能分析工具——VisualVM