文档介绍:? 2009 Lenovo Lenovo Confidential Lenovo Confidential Lenovo Confidential Lenovo Confidential Lenovo Confidential GIT & Gerrit 介绍概念、功能、日常使用 Apr. 09, 2009 Page 2 puting Proposal ? 2009 Lenovo Lenovo Confidential Lenovo Confidential Lenovo Confidential Lenovo Confidential Lenovo Confidential Pros and cons ?与 Google 和高通的合并更加方便. ?代码审查程序化. ?查看代码异同、修改记录、统计信息非常方便?建立分支开销很小.?效率很高?对权限的分类比较细,包括读、代码提交、审查、确认等?概念与使用习惯与 CVS 有比较大的差别,需要一个学习的过程?用户管理比较麻烦?有时候会显得比较繁琐,比如提交代码需要两步(commit and push), CVS 大部分命令都有缩写(co, ci , up), GIT 需要敲完整的命令。? CVS 可以通过对目录、文件的访问权限做到细达文件的权限控制, GIT 只能对 project 或仓库做权限控制 Page 3 puting Proposal ? 2009 Lenovo Lenovo Confidential Lenovo Confidential Lenovo Confidential Lenovo Confidential Lenovo Confidential 基本概念? CVS 管理的对象是文件;而 GIT 管理的对象是项目或仓库. ? CVS 是集中式代码管理系统,几乎所有的操作都需要服务器的参与; GIT 是分布式代码管理系统,大部分操作都不需要服务器的参与,只有少数操作需要服务器或第三方的参与(push, fetch, pull, clone). ? CVS 的分支信息、历史记录、标签都在服务器上, GIT 几乎所有的信息都在本地.? GIT 本质上是个日志式文件管理系统 Page 4 puting Proposal ? 2009 Lenovo Lenovo Confidential Lenovo Confidential Lenovo Confidential Lenovo Confidential Lenovo Confidential 基本概念功能 CVS GIT checkout 取出代码 cvs co git mit 提交代码 cvs ci git commit git push Update 获取更新 cvs up git pull 或者 git fetch + git merge 切换分支 Cvs up –r… Git checkout … difference Cvs diff 或cvs rdiff Git diff 查看记录 Cvs log Git log Page 5 puting Proposal ? 2009 Lenovo Lenovo Confidential Lenovo Confidential Lenovo Confidential Lenovo Confidential Lenovo Confidential 基本概念( GIT ) ? object: commit->tree->blob 。mit object 。所有的 object 都用唯一的 40字节的 SHA1 散列值表示? reference: tag 和 branch 都属于 reference , reference mit object. tag 的内容不会自动更新。在某个 branch mit 都会更新该 branch 的内容。?不能通过 reference 达到的 object 可以用 git-gc 或 git -prune 回收? remote: 远程仓库,如 rocket:platform/ ( nov ) ? work tree: 当前工作目录中的文件? index or cache: git add mit 的文件? HEAD: HEAD 的内容可以是一个分支,mit ID Page 6 puting Proposal ? 2009 Lenovo Le