找回密码
 FreeOZ用户注册
查看: 8026|回复: 53
打印 上一主题 下一主题

[IT技术] 开帖介绍GIT (更新git学习资源列表)

[复制链接]
跳转到指定楼层
1#
发表于 27-6-2008 18:11:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?FreeOZ用户注册

x
GIT - The stupid content tracker, 这样称呼Git的不是别人,正是她的作者,大名鼎鼎的Linux kernel的作者inus. Linux kernel原来使用的版本控制系统是BitKeeper, 不过这是个商业软件, 很多GPL的狂热份子一直为此觉得不爽,最后把Bitkeeper惹急了,不和OSDL合作了。Linus是个实用主义者,他一直用BitKeeper用得很爽,为这件事Linus狂怒了一次,大骂这些开源极端分子stupid。不过骂归骂,Linux kernel这么大的项目可不能没有版本控制啊,而且Linus一直对CVS, Subversion之流的版本控制系统不屑一顾,事已至此,徒呼奈何。不过牛人永远是牛人,说干就干,撸起袖子就自己写了一个版本控制系统。

和Linus的性格一样, Git个性十足,功能强大,不过如果没有理解它,则很有可能不得其门而入,下面偶就尝试用一系列的介绍,争取为大家揭去Git的神秘面纱,展现其 stupid content tracker的傻瓜化本质,一旦理解了它,你就会惊呼:哇真简单啊,不会用的真的都是傻瓜

ok,大家先看段有趣的视频(很长,不过是Linus亲自介绍的,语音很标准,我雅思5分的都能听懂):
GoogleTech Talk: Linus Torvalds on git
http://www.youtube.com/watch?v=4XpnKHJAok8

http://www.youtube.com/v/4XpnKHJAok8&hl=en



references:

    *  Home page: http://git.or.cz/
    *  Linux kernel git publish web site: http://git.kernel.org/
    *  GIT中文教程(!totally out of date!)   http://www.bitsun.com/documents/gittutorcn.htm
    *  IBM developerworks上的GIT教程(!also out of date!) http://www.ibm.com/developerworks/cn/linux/l-git/index.html
    * Git @ wikipedia:  http://en.wikipedia.org/wiki/Git_(software)
    * Git @ wikipedia中文:  http://zh.wikipedia.org/wiki/Git

评分

参与人数 4威望 +200 收起 理由
shyaka + 50 你太有才了!
karl.lee.2004 + 50 谢谢分享!
ubuntuhk + 50 你太有才了!
trisun + 50 谢谢分享!

查看全部评分

回复  

使用道具 举报

2#
 楼主| 发表于 29-4-2009 17:51:03 | 只看该作者

git学习资源列表

1.  Git The Basics Tutorial
      视频
      对应PDF
      这个视频和PDF做的非常好,条理非常清晰,用很多图示详细直观地解释了git的各种概念。相信用心看完一遍的话, git就可以完全能够掌握了。

2. Git cheat sheet(everybody love cheat就一页, 名副其实的cheat sheet,适合打印出来放在订电脑旁边)

3. Git community Book, Git社区合著的Git从入门到精通书籍,很好的日常参考资料,既无所不包又不乏味。
       PDF版

4.  Every day Git 20 commands


5. SVN crash Course  (如果你从svn转到git,看看这个会增强信心)

6. 如果你很懒,不上看上面的东东,那就看这个吧,提供N个懒惰等级。
  Git for the lazy

7. 想写个Version Control System? 好奇git是如何工作的?  想hack git? 看看这个
Git for designers

8. git magic 另一个优秀的git参考书
   中文翻译:git魔法

其它:  git在windows上使用的易用性已经有了巨大的提升, 因为神奇的小乌龟已经拥抱了git , 下载: 。 还有qgit

9. Git Casts 适合喜欢通过看一个个的视频教程来学习的

评分

参与人数 1威望 +50 收起 理由
8戒 + 50 谢谢分享!

查看全部评分

回复  

使用道具 举报

3#
发表于 29-4-2009 17:53:40 | 只看该作者
谢谢coredump分享!
回复  

使用道具 举报

4#
 楼主| 发表于 19-11-2010 11:43:18 | 只看该作者
一个很好的从各个方面比较git和其它版本控制系统的网站(svn, perforace, hg, bzr) http://zh-cn.whygitisbetterthanx.com/
回复  

使用道具 举报

5#
发表于 19-11-2010 12:02:12 | 只看该作者
正好这几天对于git有兴趣
谢谢了
回复  

使用道具 举报

6#
 楼主| 发表于 19-11-2010 12:13:09 | 只看该作者
gerrit http://code.google.com/p/gerrit/
和git接合使用的一个非常好的code review工具
回复  

使用道具 举报

7#
发表于 19-11-2010 14:49:03 | 只看该作者
正在打算从SVN转到GIT呢。打算从community book开始。多谢LZ资料。
回复  

使用道具 举报

8#
发表于 19-11-2010 16:30:38 | 只看该作者
git 的中文翻译应该是“给力”
回复  

使用道具 举报

9#
 楼主| 发表于 19-11-2010 17:28:09 | 只看该作者
回复  

使用道具 举报

10#
发表于 22-11-2010 11:11:06 | 只看该作者
我写过一个类似的东西,但是没有考虑Tree。不知道Git是怎么计算一个目录的SHA的?

评分

参与人数 1威望 +50 收起 理由
coredump + 50 你太有才了!

查看全部评分

回复  

使用道具 举报

11#
 楼主| 发表于 22-11-2010 14:45:40 | 只看该作者
原帖由 yuba 于 22-11-2010 10:11 发表
我写过一个类似的东西,但是没有考虑Tree。不知道Git是怎么计算一个目录的SHA的?

Tree在Git里是一个单独的类型,文件内容是blob类型,tree的内容就是目录和下面的成员,成员是文件名或者其他tree。 SHA的计算就是sha(header+content), 好像对tree和普通文件计算的方法是一样的,具体细节没研究,这里有一点介绍:http://book.git-scm.com/7_how_git_stores_objects.html
回复  

使用道具 举报

12#
 楼主| 发表于 22-11-2010 14:54:23 | 只看该作者

回复 #11 coredump 的帖子

关于其它GIT内部实现原理的介绍还有这里:http://progit.org/book/zh/ch9-0.html
回复  

使用道具 举报

13#
发表于 22-11-2010 16:01:14 | 只看该作者
都没有讲清楚

估计类似于tar cf - /dir | shasum,这样的话最深层的文件会被计算很多次checksum

有空看看源码
回复  

使用道具 举报

14#
 楼主| 发表于 22-11-2010 16:15:01 | 只看该作者
原帖由 yuba 于 22-11-2010 15:01 发表
都没有讲清楚

估计类似于tar cf - /dir | shasum,这样的话最深层的文件会被计算很多次checksum

有空看看源码

应该不会这样,我也没看原码,我感觉是直接把文件名或者文件BLOB的sha值作为输入,而不是文件的整个内容。
回复  

使用道具 举报

15#
发表于 22-11-2010 16:34:47 | 只看该作者
Since trees and blobs, like all other objects, are named by the SHA1 hash of their contents, two trees have the same SHA1 name if and only if their contents (including, recursively, the contents of all subdirectories) are identical.

八成是要从目录所包含的文件的内容来计算目录的SHA,而不是从目录所包含的文件的SHA来计算目录的SHA
回复  

使用道具 举报

16#
 楼主| 发表于 22-11-2010 16:45:52 | 只看该作者
原帖由 yuba 于 22-11-2010 15:34 发表
Since trees and blobs, like all other objects, are named by the SHA1 hash of their contents, two trees have the same SHA1 name if and only if their contents (including, recursively, the contents of al ...

从这句话看不出来必须要求文件内容一起计算,如果考虑sha值是及其难发生碰撞的,哪么可以认为文件的sha值和文件内容完全一一对应,那末基于文件的sha作为输入和给予文件内容作为输入,理论上效果相同。

评分

参与人数 1威望 +25 收起 理由
yuba + 25 有道理

查看全部评分

回复  

使用道具 举报

17#
 楼主| 发表于 22-11-2010 17:25:02 | 只看该作者
看了看git源码,如果没理解错的话,所谓tree的内容,就是"tree " + tree size  + "\0"  + tree content.tree content就是指,该tree目录下,各个文件或者目录的名字,权限描述符和相关的sha1值。

四种git object类型(blob, tree, commit, tag)的内容模型:
http://book.git-scm.com/1_the_git_object_model.html

评分

参与人数 1威望 +25 收起 理由
yuba + 25 你太有才了!

查看全部评分

回复  

使用道具 举报

18#
 楼主| 发表于 22-11-2010 17:28:52 | 只看该作者
查找这个话题,发现一个有趣的thread, 在 SHA1被破解后,有人提出git应该转而采用SHA-256, 而Linus认为git采用的SHA1不受这一破解影响,因而不需要转到SHA-256,具体理由我还没看,大概应该是这个git每个object的头部都有size参数?

Starting to think about sha-256? http://kerneltrap.org/mailarchive/git/2006/8/27/211001
回复  

使用道具 举报

19#
发表于 22-11-2010 17:39:32 | 只看该作者

回复 #18 coredump 的帖子

SHA-256的计算比SHA-1复杂,我测的数据耗时多50%

所以我采用了更轻的MD5,不但速度快,而且CPU占用率低

当然,需要承担问题的另一个方面

评分

参与人数 1威望 +50 收起 理由
coredump + 50 谢谢分享!

查看全部评分

回复  

使用道具 举报

20#
发表于 23-11-2010 20:43:13 | 只看该作者
感谢楼主

我一直用svn,很长一段时间为了解决offline提交的问题我都是把repository放在u盘上,这样无论在公司还是在家都能工作

git以前在做android的时候就看见过,但一直没有留心
看到你的帖子后我好好研究了一下,感觉这东西好像确实不错
现在已经逐渐把我自己的项目从svn转移到git了,这几天一直在试用中
回复  

使用道具 举报

21#
 楼主| 发表于 23-11-2010 22:36:21 | 只看该作者
原帖由 mianwo 于 23-11-2010 19:43 发表
感谢楼主

我一直用svn,很长一段时间为了解决offline提交的问题我都是把repository放在u盘上,这样无论在公司还是在家都能工作

git以前在做android的时候就看见过,但一直没有留心
看到你的帖子后我好好研究了 ...
svn到处都是.svn目录,和CVS一样烦人。而且因为不是真的DRCS, 放在u盘上也很不便利,u盘符号变了或者同步出错, 就是杯具。
回复  

使用道具 举报

22#
发表于 9-7-2014 22:58:59 | 只看该作者
看到老丐2008年就开始介绍git了,我到最近才开始认真用,越用越爱,赞!
回复  

使用道具 举报

23#
发表于 9-7-2014 23:01:08 | 只看该作者
说起git,现在不能不提github,非常好用的源码托管网站

http://github.com
回复  

使用道具 举报

24#
发表于 9-7-2014 23:15:17 | 只看该作者
如何参与github上的开源项目:

1. 注册github账号
https://github.com/join

2. 对感兴趣的项目fork一下
Fork A Repo
  https://help.github.com/articles/fork-a-repo

3. 将自己的修改代码通过pull request提交给原作者进行审核
Using pull requests
  https://help.github.com/articles/using-pull-requests
回复  

使用道具 举报

25#
发表于 9-7-2014 23:21:11 | 只看该作者
wohooooooo, 这个要支持!
回复  

使用道具 举报

26#
发表于 9-7-2014 23:22:35 | 只看该作者
ubuntuhk 发表于 9-7-2014 22:01
说起git,现在不能不提github,非常好用的源码托管网站

http://github.com

bitbucket, 一直再努力

评分

参与人数 1威望 +20 收起 理由
ubuntuhk + 20 谢谢分享!

查看全部评分

回复  

使用道具 举报

27#
发表于 9-7-2014 23:39:47 | 只看该作者
zymzxq 发表于 9-7-2014 22:22
bitbucket, 一直再努力

我在用bitbucket,关键是免费可以有非开源的repo
有时间折腾了再搭一个Gitlab给公司项目用

评分

参与人数 1威望 +20 收起 理由
ubuntuhk + 20 谢谢分享!

查看全部评分

回复  

使用道具 举报

28#
发表于 10-7-2014 00:05:15 | 只看该作者
git一直在用。现在有时还用mercurial。
产品方面,Bitbucket跟Stash都在用。不过Stash是要收钱的。以前的公司好像有用过Gitorious。不过没什么印象了。

评分

参与人数 1威望 +20 收起 理由
ubuntuhk + 20 谢谢分享!

查看全部评分

回复  

使用道具 举报

29#
发表于 10-7-2014 00:13:03 | 只看该作者
zymzxq 发表于 9-7-2014 22:22
bitbucket, 一直再努力



bitbucket的名气不如github,而且github上的有影响力的开源项目也更多一些,不过二者的用法倒是差不多,bitbucket的免费闭源项目支持值得一赞。
回复  

使用道具 举报

30#
发表于 10-7-2014 00:13:24 | 只看该作者
据说当年,BitKeeper给Linux代码免费提供版本控制,但Linux社区的牛人中有几个人把BitKeeper玩残了,BitKeeper一怒之下找Linus要收费,Linus没理,3周后写出了GitHub。。。。

评分

参与人数 1威望 +20 收起 理由
ubuntuhk + 20 谢谢分享!

查看全部评分

回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+11, 13-12-2024 08:02 , Processed in 0.041582 second(s), 49 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表