GIT入门PPT

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

协作开发中的质量如何保证?版本控制版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。分类:本地版本控制系统集中化的版本控制系统分布式版本控制系统GIT—分布式版本控制系统GIT简史早期Linux的开发人员是使用BitKeeper来管理版本控制和维护程式码。2005年的时候,开发BitKeeper的公司同Linux内核开源社区结束合作关系,并收回使用BitKeeper的权利。Torvalds开始着手开发Git来替代BitKeeper。随着Git的快速发展,很多有名的软件都使用Git来进行版本控制。GIT特点多数操作仅添加数据直接记录快照,而非比较差异GIT特点(续)近乎所有操作都是本地执行(离线操作)时刻保持数据完整性(SHA-1哈希值)文件流转的三个工作区域:工作目录,暂存区域,以及本地仓库工作目录,暂存区,和本地仓库注:Stage和index是同一个概念Git工作流程在工作目录中修改某些文件。对修改后的文件进行快照,然后保存到暂存区域。提交更新,将保存在暂存区域的文件快照永久转储到Git目录中。git对象Git是一套内容寻址文件系统。这种说法的意思是,Git从核心上来看不过是简单地存储键值对(key-value)。它允许插入任意类型的内容,并会返回一个键值,通过该键值可以在任何时候再取出该内容。安装GIT支持多种平台Windows/MAC下直接从官方网站:下载最新二进制发行版Linux下(以Debian/Ubuntu为例)$apt-getinstallgit从官网下载源码自己编译安装配置GIT配置用户名称和电子邮件地址,以在commitlog中体现出来。#gitconfig--globaluser.namezhangsan#gitconfig--globaluser.email“zhangsan@gmail.com查看已有的git配置信息#gitconfig--list配置单个git项目的配置#gitconfiguser.emailzhangsan@qq.com配置core.autocrlfWindows和Unix系统下文件换行的方式不同,因此建议进行以下配置:windows系统下:#gitconfig--globalcore.autocrlftrueUnix类系统下:#gitconfig--globalcore.autocrlfinput获取帮助想了解Git的各式工具该怎么用,可以阅读它们的使用帮助,方法有三:$githelpverb$gitverb--help$mangit-verb比如,要学习config命令可以怎么用,运行:$githelpconfig使用GIT仓库在工作目录初始化新的git仓库:#mkdirhello#cdhello该目录称为工作目录#gitinit将会在当前目录产生.git文件夹(即git目录)创建一个bare仓库(无工作目录,一般在服务器上使用):#mkdirhello.git#cdhello.git#gitinit--bareClone一个仓库$gitcloneURLgitadd和gitcommit$gitadd将未跟踪或已修改的文件加入到暂存区域#gitaddhello.c$gitcommit将暂存区域的文件提交到版本库,(如果使用-a选项已跟踪已修改未暂存的文件也会提交)#gitcommit-maddhelloworldmodule提交消息(commitmessage)使用gitcommit会提示写提交消息或者gitcommit-m“msg......”建议的消息模板:本次更新的简要描述(50个字符以内)如果必要,此处展开详尽阐述。段落宽度限定在72个字符以内。某些情况下,第一行的简要描述将用作邮件标题,其余部分作为邮件正文。其间的空行是必要的,以区分两者(当然没有正文另当别论)。如果并在一起,rebase这样的工具就可能会迷惑。另起空行后,再进一步补充其他说明。-可以使用这样的条目列举式。-一般以单个空格紧跟短划线或者星号作为每项条目的起始符。每个条目间用一空行隔开。gitstatus查看工作目录状态三种文件状态:Changestobecommitted已暂存尚未提交Changesnotstagedforcommit已跟踪的文件修改后尚未暂存Untrackedfiles尚未跟踪的文件gitlog显示提交日志$gitlogcommit96a8a6dff817ec66f44342007202690a93763949Author:zhangsanzhangsan@qq.comDate:MonDec921:52:112013+0800addhelloworldmodule1.commithash(SHA-1校验和)2.作者的名字和电子邮件地址3.提交时间4.最后缩进一个段落显示提交说明也可使用git自带的图形工具gitk(历史记录更直观)git分支gitbranch分支操作基于当前分支,新建一个名为develop的分支#gitbranchdevelop换到develop分支#gitcheckoutdevelop简化上面两个操作为一个操作#gitcheckout-bdevelop从某个历史提交创建分支#gitcheckout-btemp8f7a493c分支合并Gitmerge合并分支#gitcheckoutmaster转到主分支#gitmergebugfix合并1个bug修复分支#gitmergenewfeature合并1个新特征分支与服务器同步gitpush和gitpull为远程仓库(URL)添加一个别名:#gitremoteaddoriginuser@server:/path/repo.git#gitfetchorigin同步服务器上的数据到本地#gitmergeorigin/master合并(一般是快进主分支)#gitpulloriginmater简化了gitfetch和gitmerge两个操作#gitpushorigin[loacal_branch]:[remote_branch]更新远程仓库#gitpushorigin:serverfix删除远程的serverfix分支gitdiff比较差异#gitdiff比较的是工作区和暂存区的差别#gitdiff--cached比较的是暂存区和版本库的差别#gitdiffHEAD可以查看工作区和版本库的差别每次commit后,gitdiff--cached没有内容,是因为暂存区的内容已经更新到版本库中,因此暂存区和版本库中的内容无差别gitreset撤销操作gitreset–mixedid,是将git的HEAD变了,并根据HEAD来更新暂存区,但文workingtree的文件并没有改变。gitreset–softid.实际上,是gitreset–mixedid后,又做了一次gitaddgitreset–herdid.是将git的HEAD变了,文件也变了(相当于回到某个提交,id之后的改变都将灰飞烟灭)。以上的1,2条用于重新整理提交,第3条用于放弃id之后的修改注意:一定要在理解了的基础上使用.gitignore过滤文件忽略规则a.空行用于分割,便于阅读,#号开头表示注释,空行和#会被git忽略。b.*号匹配文件或目录名中的0或多个字符,但不包含表示文件目录的反斜杠/;?匹配单个字符;方括号[]表示匹配其中的一个字符。*.[ao]匹配*.a*.o*foo[0-9].c匹配foo0.cfoo1.c....foo9.cc.以反斜杠开头的表示只匹配当前目录下/todo匹配当前目录下的todo,子目录下的todo不会匹配d.以反斜杠结尾的表示匹配目录即doc/忽略整个doc目录e.!对规则取反,即包含之前忽略掉的文件。如:*.html!index.html表示除了名为index.html文件,其它的html文件均忽略(如果文件名含#或!可使用\转义,eg:\#*#)怎样进行团队协作开发Git支持多种开发流程(GitFlow),典型的有:集中式工作流(如下图)集成管理员工作流司令官与副官工作流git使用惯例要早提交,常提交,并且不要觉得麻烦1.每个提交的修订都会为你提供一个还原点。如果你完全把代码搞砸了(没骗你,我们都这么做过),你是希望恢复到一个小时前的工作还是一周前的工作?2.合并文件时会出现的危险会随着时间不断增加。合并文件一直很麻烦。如果你不是每天都保持提交代码,某一天你会突然发现你和其他人的更改内容会有50多个冲突。你不会为此感到高兴的。3.它促使你把任务分离成分散的单元。通常人们都是快完成的时候才提交的,因为他们想把代码做成一个完整的逻辑单元模块。不过庞大的任务不可避免地要分离出较小的分散功能,而频繁地提交它们会使你更了解它们,你可以一个个地构建并提交。git使用惯例(续)写提交信息时一定要认真解释清楚为什么要提交新的代码,同一个程序员之后提交信息绝不能和前面的完全相同.这里列出一些提交信息的反面教材:1.什么也没做2.能跑了3.解决了一些混帐问题4.解决了5.改进了一点bug6.上传了7.排字错误8.修订1024git使用惯例(续)常用gitstatus查看工作目录状态提交前要检查你更改了什么(使用gitdiff)不要上传你自己的用户设置附属文件也要集成在一起,比如更新了新的第三方库(无源码的.a.so文件)临时文件,编译生成的文件不要放进源代码管理软件里(使用.gitignore来忽略),也不要通过复制或者打包文件来进行备份

1 / 31
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功