内部GIT学习材料_第1页
内部GIT学习材料_第2页
内部GIT学习材料_第3页
内部GIT学习材料_第4页
内部GIT学习材料_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、内部GIT/EGIT学习材料赞同科技基础概念n分布式仓库n开发者人人拥有仓库,公司的服务器、甲方客户的服务器都可以拥有仓库。仓库用来维护版本。n仓库之间松耦合n不是cvs、svn那种紧耦合模式(断网无法维护版本)n也不是ftp、文件共享那种无耦合模式(只能维护最终版)n每个本机仓库可以配置多个远程仓库来实现松耦合,首个远程仓库名字为origin。n远程仓库通过fetch获取最新内容(可以限定只fetch某些分支而不是全部内容)基础概念nGit仓库直接由分支branch组成ncvs的branch,本质就是文件差量的标签,所以cvs的branch需从文件内扫描出来。nsvn的branch,本质就是

2、子目录,所以svn的branch有时需要从某个较深的子目录里面找出来。n由于git仓库直接由branch组成,所以我们建立目录时可以完全以内容为导向,不必建立4.x/4.0这样的以版本为名的子目录了。基础概念n仓库内创建的首个branch的名字为mastern从已有branch切一个新branch将沿袭所有资源,这与cvs/svn针对局部资源打分支的概念是不同的,git的branch覆盖全局。n所以在eclipse里面切换git的不同branch时,特点就是瞬间整体切换,workspace里面的所有该仓库的工程,可以瞬间全部switch(若某些该仓库的工程在新branch里不存在则自动clos

3、e,切回时自动open)ngit提倡你多切分支,你可以在去上厕所前切一个,去上厕所后再切一个,左切切右切切,没关系,它罩得住。基础概念n分支由提交commit组成ncommit本质就是资源树的差量,在本地分支上产生。n其id为20字节的hash,非顺序产生,所以支持分布式存在。ncommit在本地分支上产生,但通过一些版本操作,commit可以属于多个branchn所以我们在eclipse的history视图里看到的commit历史有点像地铁线路,如右图基础概念ntag相当于branch的快照n这个概念和svn及cvs的类似。n我们用来标记公司产品在某个时间点的release或市场上的某一次投

4、产版本命名规范n公司产品版本(v_*)nbranchn以v_开头,以.x结尾的版本号n例如:v_1.0.x,v_2.xntagn以v_开头,release版本号n例如:v_1.0.0,v_2.1命名规范n市场维护版本(b_*)nbranchn以b_开头,银行缩写,项目名(可略,用来区分同一个银行的多个分支),启动月份(yyyyMM)n例如:b_ceb_200910,b_bcub_yinqi_201003ntagn以b_开头,银行缩写,项目名(可略,用来区分同一个银行的多个分支),投产日期(yyyyMMdd)n例如:b_ceb_20100202,b_bcub_yinqi_20100606命名规范

5、n其他临时分支(在公司服务器外管理)n任务分支,例如用bug系统编号,bugs_ab_1378n在行里建立dev(开发分支)、uat(测试分支)、b_bankname_yyyyMM(投产分支),后两个分支可以从第一个分支中挑选(即cherry pick)工作成果,依据测试投产与开发的不同要求,实现三个平行的版本分支。关于后续内容n后续内容以Egit为例简略介绍git使用n若想详细了解某一操作的详细步骤可参考egit帮助中的tasksEgit操作准备nEclipse安装egitnHelp-install new software/egit/up

6、dates常用视图nGit RepositoriesnHistoryn右键相关工程team-show in historyRSA认证nPreferences-General-Network Connections-SSH2n(ssh2)Key management-generate rsa key- save private key(私钥和公钥都会保存下来) - applyn确认刚才保存的私钥出现在(ssh2)General- private keys里面,否则add private key选择刚才保存的私钥(非pub后缀的那个)。n把公钥内容发给管理员,开通身份认证及权限建库n从公司的git

7、库克隆创建(管理员已经帮你加好公钥)nGit repositories视图nClonenUrinssh协议n统一使用系统git用户建立ssh连接,egit自动使用刚才生成的rsa密钥进行认证n公司服务器地址,最好使用域名ntesting是已创建的库之一,开放全部权限供学习测试取分支n克隆建库将自动取下所有分支n在branches/Remote Tracking下(注:这里已经下载到本地了)n在remotes中n可以通过fetch再次获取,下载到branches/Remote Trackingn可以通过configure fetch修改获取范围(只取关心的分支)取分支nConfigure对话框中

8、选取advancen逐条配置映射specnSource ref为分支名nDestination ref为跟踪分支名n保存完成切分支nBranches下两种分支nLocal为本地操作分支nRemote Tracking为远程跟踪分支n从要维护的远程分支切出本地分支n在远程分支右键create BranchnLocal将出现可以操作的同名本地分支检出工程n切出本地分支后,可以在Working Directory中看到分支内的所有资源文件n找到相应的工程位置并importn提示:检出工程后,点击Branches中不同分支可以实现Eclipse Workspace所有分支相关工程的快速切换保持跟踪状态

9、n本地分支可以配置对应的远程库以便显示出松耦合的上行和下行的commit数量n保持跟踪关系的local分支上的所有工程都将显示commit数量,如图:2个上行提交(待push),1个下行提交(待pull,或rebase)基本日常操作流程n尽量经常fetch保持对远程库的监视n通过rebase消化下行的commit(若有下行的commit)n若rebase过程中出现冲突,冲突文件显示成n手工修正后add to index,文件变为n全部冲突文件修改后,rebase-continue,直到完成n若再次发生冲突则再次手工修正、add to index、continuen在本地完成代码工作后,comm

10、it形成本地提交,导航器热键为CTRL+SHIFT+3n多次本地Commit后,具备网络条件时,push to upstream基本日程操作nRebase原理举例说明nC1、C2为历史过往提交,C5、C6为本地后续的提交(灰色的部分)。nC3、C4为fetch后发现的下行提交(远程跟踪分支)n通过rebase操作,本地的C5、C6分别迁移成为C5和C6, 达到了消化C3、C4的目的n若迁移中发生冲突,则手工解决、add to index、rebase continue关于Push和PullnPush之前必须保证下行commit都已被消化,否则push会报错失败,这时需要rebase。nPull

11、的本质就是一个二合一操作:Fetch再加一个三选一操作nRebasenMerge(不推荐)nNonen为了使操作步骤更明确,我们建议没必要使用pull,而是根据fetch结果有无下行commit再选择rebasen惯用的基本操作为:fetch-rebase-commit-push操作技巧nAmend commitn作用:对最后一次提交就行修订,防止产生过多的零碎的提交。n场景:发现最后一次提交内容不完整,例如忘了格式化,需要更正拼写错误,等等。n方法:在commit对话框按下amend图标,在上次提交基础上继续完善。操作技巧nCherry pickn作用:把别的分支中的commit复制到当前分

12、支中。n场景:别的分支解决了某个bug,或者加了新功能,当前分支也想要。n方法:在history中找到其他分支对应commit记录后,右键菜单cherry pick操作技巧nStashn作用:把未commit的修改临时搁置起来,以后还可以应用回来n场景:当前分支的工作进行到一半,另一个分支有紧急任务需要切换过去完成n方法:Git仓库视图中点击仓库右键stash changes完成其他分支工作后切换回原分支,再apply操作技巧nResetn作用:把当前分支的HEAD重置到历史中的某次提交点n场景:时空穿越n方法:在history视图中选中目标提交点,右键reset-nSoft:仅修改了HEAD

13、指针。文件差异成为unstaged change。nMixed:修改了HEAD指针和索引,但文件未变,可以把原来进行中的工作带过来继续完成。文件差异形成staged change。nHard:彻底重置,没有重置前的任何痕迹。Soft和Mixed没有质的差别,通过Git Staging视图操作可以根据自己的需求手工解决版本文件差异,继而提交形成新的版本。 操作技巧nCheck outn作用:把WorkingDirectory切换到任意分支的任意提交时刻(而switch to只能是任意分支的HEAD)。n场景:查看某个分支的某个历史版本n方法:在history视图中选中目标提交条目,右键check out高级管理nTag(用于标记正式release或投产)n选中history视图中的某一条目即可创建tagn在git repositories视图中删除高级管理n管理远程库上的分支(通过Push)n在远程库上创建分支n首先要创建一个同名的本地分支,再通过Remotes的push节点configure pushn选advanced后,打开Push Ref Specification对话框加入映射关系。n加入映射后,回到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论