Git基础知识培训

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

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

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

资源描述

GITPage2大纲Git简介Git基础Git操作Git分支管理最佳实践git-flowGit建议使用规范Page3GIT简史2002年,linux项目组开始启用分布式版本控制系统BitKeeper来管理和维护代码。2005年的时候,开发BitKeeper的商业公司同Linux内核开源社区的合作关系结束,他们收回了免费使用BitKeeper的权力April5,2005–Linus发布首个git版本June15,2005-Git用作Linux源码版本控制Page4Git简介它的特点在于:Ø1.开源Ø2.高速Ø3.节省大量空间Ø4.灵活、简洁、高效的分支管理它能最大限度地发挥多人协同并发编程的效能,让分支管理更快速,版本管理更简单Page5高速Git比其他的VCS工具要快很多,因为git绝大部分是离线操作,对网络依赖小timegitclonessh://gufeiyong@scm.hz.netease.com:2222/backend/datastream.git/dev/nullreal0m26.559suser0m2.568ssys0m1.028stimesvnco节省空间git比较节省空间。Django项目为例。44M./django-git53M./django-svngit克隆比SVN要小很多,且git克隆包含整个项目的历史版本。SVN只包含项目的最后一个版本。Page7分支以前的VCS工具分枝的方法是对每一个分枝都放到一个独立的目录中。而git可以让你在同一个工作目录中切换(switch)到不同的分枝。创建和切换分枝几乎是即时的(instant),并且存在本地分支Git开发者可以随时创建,合并,删除多个分枝。它鼓励一种非线性的开发周期,它可以说是并行的多线程模式而不是多个步骤串行的模式。Page8大纲Git简介Git基础Git操作Git分支管理最佳实践git-flowGit建议使用规范Page9Git基础WhatisGit?优势工作原理Page10Git基础优势直接纪录快照,而非差异比较近乎所有操作都是本地执行时刻保持数据完整性多数操作仅添加数据Page11集中式在每个版本中记录着各个文件的具体差异SVN、CVS等Page12分布式--去中心却集中保存每次更新时的文件快照Git直接纪录快照,而非差异比较Page13分布式--去中心却集中Page14文件的三种状态文件已提交已修改已暂存已被安全地保存到本地数据库中把已修改的文件放在下次提交时要保存的清单中修改了某个文件,但还没有保存Page15工作原理文件流转的三个工作区域Page16Git基本工作流程1.从git仓库中checkout项目到工作目录。2.在工作目录修改某些文件。3.对修改后的文件进行快照,然后保存到暂存区域。4.提交更新,将保存在暂存区域的文件快照永久转储到Git目录中Page17大纲Git简介Git基础Git操作Git分支管理最佳实践git-flowGit建议使用规范Page18Git安装Linux$yuminstallgit-coreUbuntu$apt-getinstallgit-coreWindowsMac用户信息配置配置你的个人用户名称和邮箱地址.设置你默认使用的文本编辑器和差异比较工具$gitconfig--globaluser.name“Zhangsan$gitconfig--globaluser.emailzhangsan@csdn.net$gitconfig--globalcore.editorvim$gitconfig--globalmerge.toolvimdiff查看配置信息gitconfig-lcommandtolistallthesettings.Page20Git配置技巧设置git别名$gitconfig--globalalias.cocheckout$gitconfig--globalalias.brbranch………Page21获取帮助获取帮助命令:$githelpverb$gitverb--help$mangit-verb比如,要学习config命令怎么用$githelpconfigPage22取得项目仓库从当前目录初始化到此项目所在的目录,执行$gitinit从现有仓库克隆$gitcloneurlPage23创建忽略文件通常都是些自动生成的文件,像是日志或者编译过程中创建的等等.无需纳入Git的管理,也不希望它们总出现在未跟踪文件列表.我们可以创建一个名为.gitignore的文件,列出要忽略的文件模式,来看一个简单的例子:cat.gitignore*.[oa]*~Tips:1.README文件也是需要创建的文件。这个相当于项目的简介首页,可以记录项目的版本发布历程,代码规范,代码命名规范,代码目录结构说明等,一个项目中可以有多个.md文件。2.Gitignore文件前面的“.”不要忽略,该文件是手动创建的3.gitignore只能忽略未被版本控制的文件Page24忽略文件配置规则配置语法以斜杠“/”开头表示目录;以星号“*”通配多个字符;以问号“?”通配单个字符以方括号“[]”包含单个字符的匹配列表;以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;示例(1)规则:fd1/*说明:忽略目录fd1下的全部内容;注意,不管是根目录下的/fd1/目录,还是某个子目录/child/fd1/目录,都会被忽略;(2)规则:/fd1/*说明:忽略根目录下的/fd1/目录的全部内容;(3)规则:/*!.gitignore!/fw/bin/!/fw/sf/说明:忽略全部内容,但是不忽略.gitignore文件、根目录下的/fw/bin/和/fw/sf/目录Page25查看文件及本地版本库状态$gitstatus#Onbranchmasternothingtocommit(workingdirectoryclean)$vimREADME$gitstatus#Onbranchmaster#Untrackedfiles:#(usegitaddfile...toincludeinwhatwillbecommitted)##READMEnothingaddedtocommitbutuntrackedfilespresent(usegitaddtotrack)Page26添加和跟踪文件$gitadd.#将文件的修改,文件的新建,添加到暂存区。$gitadd-u#将文件的修改、文件的删除,添加到暂存区$gitadd-A#将文件的修改,文件的删除,文件的新建,添加到暂存区。Page27查看已暂存和未暂存的更新---Gitdiff魔法$gitdiff#工作区和暂存区比较$gitdiff--cached#HEAD和暂存区比较$gitdiffHEAD#HEAD和工作区比较$gitdiffHEADHEAD^#HEAD和HEAD的父版本比较$gitdiffnewbranch#比较本地工作区和新分支Page28提交更新gitcommit#Pleaseenterthecommitmessageforyourchanges.Linesstarting#with'#'willbeignored,andanemptymessageabortsthecommit.#Onbranchmaster#Changestobecommitted:#(usegitresetHEADfile...tounstage)##newfile:README#modified:benchmarks.rb~.git/COMMIT_EDITMSG10L,283Cgitcommit-m”-m用来直接增加注释提交”Page29移除文件$gitrmfilename#删除文件并存入暂存区$gitrm–rffoldername#删除文件夹并存入暂存区$gitmv[sourcefile][destinationfile]#移动源文件为目标文件,相当于重命名Demo:$gitmvreadme.txtREADME相当于$mvreadme.txtREADME$gitrmreadme.txt$gitaddREADMEPage30查看提交历史$gitlog#控制台查询$sourcetree#使用图形化工具查阅提交历史Page31查看提交历史$gitlog-5#最近5次提交$gitlog-p#查看所有提交日志及就该内容$gitlog--graph#以图形方式查看日志$gitlog--pretty=oneline#查看所有提交日志及就该内容Page32标签$gittag#查看标签$gittagtag_name#创建新的标签$gittag-dtag_name#删除标签$gittagtag_name哈希版本号#补打标签$gitpushorigintagtag_name#推送本地标签到服务器$gitpushorigin--tag#推送本地所有标签到服务器$gitpushorigin:refs/tags/tag_name#删除服务器tagPage33撤销操作$gitcommit–amend#修改最后一次提交$gitresetHEADfilename#取消已经暂存的文件$gitcheckout–filename#取消对文件的修改$gitrevert#反转提交Page34分支操作$gitbranch#查看本地分支,当前分支为绿色$gitbranch-a#查看所有分支$gitcheckout–bbranch_name#创建新分支$gitbranch–dbranch_name#删除分支$gitcheckoutbranch_name#切换分支$gitpushoriginlocal_branch:remote_branch#将本地分支推送到server$gitpushorigin:remote_branch#删除server端分支$gitmergebranch_name#合并分支Page35贮藏$gitstashsave“注释”#只能贮藏暂存区和未暂存的内容$gitstashlist#查看本地的贮藏$gitstashpop--indexstash@{0}#恢复贮藏$gitstashdropstash@{0}#删除贮藏Page36远程仓库的使用查看当前的远程库$gitclonelvlin@192.168.60.45:repos/share.git$gitremote-v添加远程仓库$gitremoteaddoriginlvlin@192.168.60.45:repos/share.gitPage37远程仓库的使用推送数据到远程仓库$gitpushoriginmaster查看远程仓库信息$gitremoteshoworiginPage38大纲Git简介Git基础Git操作Git分支管理最佳实践git-flowGit建议使用规范Page39Git-flow工作流主干分支Master:随时可供在生产环境中部署的代码,建议伴有标签(TAG)Develop:每天需要提交和合并的代码,功能逐渐完成的代码开发分支辅助分支Feature:新功能分支,辅助develop分支。主要用于实验性且效果不好的代码变更。或者用于项目组新成员接手开发新功能等。分支可以合并到develop分支,或者直接丢弃。命名规范:feature-*Release:当基本版本完成,准备提交上线时的分支,本分支可以做小BUG的修复。成功通过测试后,必须合并到Master分支,并记录

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

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

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

×
保存成功