Git Community Book 中文版 The open Git resource pulled together by the whole community 社区精华 尽入囊中 AUTHORS Thank these guys: Alecs King (alecsk@gmail.com), Amos Waterland (apw@rossby.metr.ou.edu), Andrew Ruder (andy@aeruder.net), Andy Parkins (andyparkins@gmail.com), Arjen Laarhoven (arjen@yaph.org), Brian Hetro (whee@smaertness.net), Carl Worth (cworth@cworth.org), Christian Meder (chris@absolutegiganten.org), Dan McGee (dpmcgee@gmail.com), David Kastrup (dak@gnu.org), Dmitry V. Levin (ldv@altlinux.org), Francis Daly (francis@daoine.org), Gerrit Pape (pape@smarden.org), Greg Louis (glouis@dynamicro.ca), Gustaf Hendeby (hendeby@isy.liu.se), Horst H. von Brand (vonbrand@inf.utfsm.cl), J. Bruce Fields (bfields@fieldses.org), Jakub Narebski (jnareb@gmail.com), Jim Meyering (jim@meyering.net), Johan Herland (johan@herland.net), Johannes Schindelin (Johannes.Schindelin@gmx.de), Jon Loeliger (jdl@freescale.org), Josh Triplett (josh@freedesktop.org), Junio C Hamano (gitster@pobox.com), Linus Torvalds (torvalds@osdl.org), Lukas Sandström (lukass@etek.chalmers.se), Marcus Fritzsch (m@fritschy.de), Michael Coleman (tutufan@gmail.com), Michael Smith (msmith@cbnco.com), Mike Coleman (tutufan@gmail.com), Miklos Vajna (vmiklos@frugalware.org), Nicolas Pitre (nico@cam.org), Oliver Steele (steele@osteele.com), Paolo Ciarrocchi (paolo.ciarrocchi@gmail.com), Pavel Roskin (proski@gnu.org), Ralf Wildenhues (Ralf.Wildenhues@gmx.de), Robin Rosenberg (robin.rosenberg.lists@dewire.com), Santi Béjar (sbejar@gmail.com), Scott Chacon (schacon@gmail.com), Sergei Organov (osv@javad.com), Shawn Bohrer (shawn.bohrer@gmail.com), Shawn O. Pearce (spearce@spearce.org), Steffen Prohaska (prohaska@zib.de), Tom Prince (tom.prince@ualberta.net), William Pursell (bill.pursell@gmail.com), Yasushi SHOJI (yashi@atmark-techno.com) 英文版 MAINTAINER / EDITOR Bug this guy: Scott Chacon (schacon@gmail.com) 中文版 MAINTAINER / EDITOR liuhui998 (liuhui998@gmail.com),(http://liuhui998.com) liu Wei (liuw@liuw.name),(http://blog.liuw.name) Wendal Chen(wendal1985@gmail.com),(http://wendal.net) Jiancong Guo(guojiancong0121@gmail.com),(http://www.cbpm-gw.com) 中文版网址 http://gitbook.liuhui998.com Git Community Book 中文版 Chapter 1 介绍 欢迎使用 欢迎使用GIT 欢迎来使用Git, 它是一个快速的分布式版本控制系统。 这本书的目的是为那些初学者尽快熟悉Git,提供了一个良好的起点。 此书将以介绍Git如何存储数据做为开始,让你了解它和其它版本控制系统有什么不同的背景。这大约要花你20分 钟的时间。 接下来,我们会讲一些Git的基本用法 基本用法,那些你将在90%的时间都在使用的命令。这些东东能给一个不错的使用的基 础,也许这些命令就是你将使用的全部命令。这一节大约会花你30分钟的时间来读。 4 Chapter 1: 介绍 其后,我们会讲一些稍微复杂的Git中级用法 中级用法,这些用法也许会替换掉前面的基本用法。在你了解前面的基本用法 后, 这些看起来像魔术一样的命令,你可能会用起来很爽。 如果前面的这些东东你都掌握了,我们就会讲Git的高级用法 的高级用法,这些高级用法也许大多数人很少使用,但是在特定 的环境会非常有用。学习这些用法(命令),你将能获得全面的日常Git知识; 你将能成为Git大师。 即然你学会了Git, 我们将会讲在 在Git中工作 中工作。我们将要学习 Git 配合脚本、部署工具、编辑器和其它工具一起工 作。这一节将帮助你将Git 集成进你的工作环境。 最后我们会有一系列的文章:low-level documentation,这些可能对那些Git hacker 有用,包括Git 的内核和协 议如何运作等等。 反馈与参与 如果你发现本书的中任何错误,或者你想参与进此书的编写,你可以给我写email schacon@gmail.com, 或者你也可 以用git得到本书的原始 档案(source) http://github.com/schacon/gitbook, 然后给我发一个补丁(patch)或者一个pull请求 译者注:如果有哪位朋友发现中译本的错误,或者是想参加此书的翻译,也可以给我发email liuhui998@gmail.com, 或者 你也可以用git得到本书的原始 档案(source) http://github.com/liuhui998/gitbook, 然后给我发一个补丁(patch)或者一个 pull请求 参考 这本书由很多不同的资料汇聚起来,如果你更愿意阅读原始的文章和资料,下面提供了它们的url: • Git User Manual 5 Git Community Book 中文版 • The Git Tutorial • The Git Tutorial pt 2 • "My Git Workflow" blog post GIT对象模型 对象模型 SHA 所有用来表示项目历史信息的文件,是通过一个40个字符的(40-digit)“对象名”来索引的,对象名看起来像这样: 6ff87c4664981e4397625791c8ea3bbb5f2279a3 你会在Git里到处看到这种“40个字符”字符串。每一个“对象名”都是对“对象”内容做SHA1哈希计算得来的,(SHA1 是一种密码学的哈希算法)。这样就意味着两个不同内容的对象不可能有相同的“对象名”。 这样做会有几个好处: • Git只要比较对象名,就可以很快的判断两个对象是否相同。 • 因为在每个仓库(repository)的“对象名”的计算方法都完全一样,如果同样的内容存在两个不同的仓库 中,就会存在相同的“对象名”下。 • Git还可以通过检查对象内容的SHA1的哈希值和“对象名”是否相同,来判断对象内容是否正确。 对象 每个对象(object) 包括三个部分:类型 类型,大小 大小和内容 内容。大小就是指内容的大小,内容取决于对象的类型,有四种类 型的对象:"blob"、"tree"、 "commit" 和"tag"。 6 Chapter 1: 介绍 • “blob”用来存储文件数据,通常是一个文件。 • “tree”有点像一个目录,它管理一些“tree”或是 “blob”(就像文件和子目录) • 一个“commit”只指向一个"tree",它用来标记项目某一个特定时间点的状态。它包括一些关于时间点的 元数据,如时间戳、最近一次提交的作者、指向上次提交(commits)的指针等等。 • 一个“tag”是来标记某一个提交(commit) 的方法。 几乎所有的Git功能都是使用这四个简单的对象类型来完成的。它就像是在你本机的文件系统之上构建一个小的文 件系统。 与SVN的区别 的区别 Git与你熟悉的大部分版本控制系统的差别是很大的。也许你熟悉Subversion、CVS、Perforce、Mercurial 等等,他 们使用 “增量文件系统” (Delta Storage systems), 就是说它们存储每次提交(commit)之间的差异。Git正好与之相 反,它会把你的每次提交的文件的全部内容(snapshot)都会记录下来。这会是在使用Git时的一个很重要的理念。 Blob对象 对象 一个blob通常用来存储文件的内容. 7 Git Community Book 中文版 你可以使用git show命令来查看一个blob对象里的内容。假设我们现在有一个Blob对象的SHA1哈希值,我们可以通 过下面的的命令来查看内容: $ git show 6ff87c4664 Note that the only valid version of the GPL as far as this p
git_guide_book
计算机 >
Git >
git >
文档预览
164 页
0 下载
415 浏览
0 评论
0 收藏
3.0分
温馨提示:如果当前文档出现乱码或未能正常浏览,请先下载原文档进行浏览。
本文档由 user 于 2020-12-27 08:41:53上传分享