服务粉丝

我们一直在努力
当前位置:首页 > 科技 >

Git初步,理清基本的git(github)流程

日期: 来源:虫虫安全收集编辑:项目

概述

当我初次接触git时,我需要快速学习基本的git工作流,以便快速接收一个开源web项目维护。但是,我很难理解工作流程,因为我不太了解git使用关键点。

fork,clone,pull、branch、保存、测试、add,评论、commit,push(注以上黑体的单词都是git命令的部分),再次测试,讨论以及重复进行这六个步骤,仅仅为更新进网站,就有这样繁琐的不走,是有点很夸张,有点大张旗鼓。所有初学者都可能会迷惑,会烦恼,会骂搞这么复杂搞毛毛。

网上git教程非常多,图文并茂的也不少。虫虫在此不愿意重复论述。我们在此只对典型地git工作流程的做一下描述、对流程各个关键过程和步骤做解释。以此作为一个基础,帮助初学者理解git的意义,帮他们快速上手。为什么要使用Git?

Git是一个分布式版本控制系统(VCS),人们用它来控制文件的变更过程,对每一步的变化做跟踪,必要时候可以撤回,基于此让大家一起协作工作,其他的VCS还包括最初的RCS、CVS,微软的VSS,SVN,BitKeeper等。Git最初是linus开发来用来为linux内核项目管理用的。

Git基于一个宗旨,鼓励大家都参与,基本上任何人都可以提出变更申请(github:Pull request,gitlab:Merge request),但只有少数负责人(owner和开发组)可以接受,从而合并变更。一个人可以同时处理很多项目,为了管理这大量的项目(Repo),Git(工具)和Gitlab 、GitHub(协作网站)可以制作并保存许多版本的项目和其版本过程,每个项目对应不同的权限或用于不同的目的。

例如,例如构建公共项目代码通常在线托管GitHub中。如果想要修改,增加功能,解决bug,甚至是完善一下文档。我们都可以通过github网站上通过fork,在个人项目下创建一个副本,然后对这个副本进行修改,甚至是"蹂躏",但是无论你做什么原始版本都不会有任何的影响,直到你想把你的修改通过Pull request 提交给主项目,并且主项目的管理者接受你的请求。先决条件:创建一个GitHub帐户。

GitHub是一个共有项目托管网站,项目所有者保留项目的正式版本,其他人需要修改,先得有github账号,并fork得到项目的在线副本。当然对公开项目而言如果你只想在本地得到一个项目副本的话,只需要通过git clone 项目地址,即可。比如下面是虫虫的github个人页面:

在本地安装Git

Git是版本控制工具,帮助我们跟踪项目文件变更。他运行在我们本地电脑上。如果你本地系统是Linux的话,一般会默认安装,如果没有的话,你可以通过发行版的包管理系统安装,比如yum install git。windows版本git工具是由微软开发和维护的git for window(msysgit)和各种git GUI客户端。

当然git的根本还在于git命令行,通过git shell执行各个命令也是最方便最直白的,建议不管你有没有基础,都先从git shell开始,不要对命令产生任何的恐惧,他是你最好的朋友,当你使用任何图形git客户端工具出现问题时候也建议用git shell再试试,往往根据其错误提示最容易找到问题所在。典型的github工作流程

一旦你安装了git并且创建了GitHub帐户(当然对内部项目你可以使用gitlab

自建git托管网站),那么你的git之旅正式开始。首先找到你感兴趣的项目,fork或者clone复制它。这两个命令的区别是:fork是在github复制一个自己的在线的项目,你拥有完全地权限,可以任意"蹂躏"。clone是在本地复制一份项目,除非你clone的是自己的项目,否则,你只能在本地修改,不能对其的操作push到github远程仓库。而且clone 可以随意clone只要不是在同一目录下多次clone即可。

典型的工作流程和做法是,由于你没有远程仓库的权限,你先在github通过fork,复制自己的一份远程仓库,然后通过clone你自己这个远程副本到本地,进行修改,修改后push到自己的githu远程副本,然后通过github上的Pull request发起请求,这将会把你的修改请求发送到原始的仓库管理者,发出pull request后,github会自动检查冲突,然后通知原始仓库的管理者,有个Pull request,原始仓库管理检查请求,并对变化进行review,然后做出接受或者拒绝你的变更请求。

在线副本(fork)

要开始为项目提供代码,首先需要做一个可以控制的原始项目的在线副本。然后你所有的改变,都可以将其添加到你的在线副本中。然后发起Pull request,发起变化后Githu会自动的将你的在线副本和原始副本进行比较,通知原始项目维护者,由他并决定是否接受你的变更。github的fork操作可以说是git和github变得流行的最重要的功能。鼓励大量用户,不需要加入项目组就可以随时随地的贡献力量。

Git项目文件夹的一般叫"repository"(仓库),简称"repo"。仓库会包含项目的所有源码文件以及git版本信息,Git版本跟踪的文件,git项目文件都位于项目更目录下的.git目录,以及以markdow格式项目说明文档README.md文档。

要创建一个github在线副本,你在原始项目的右上角,点击 "Fork"按钮。

就会会在您的GitHub帐户利用原始仓库的最新版本创建一个在线副本。所有Fork的项目,都会在项目路径下发,有个forked form xxx的原始仓库的链接,比如虫虫这个项目就是fork于perl6/doc的原始仓库。

本地副本(clone)

要对项目进行修改,并对其测试,或者部署一个github项目,你需要的本地clone一个本地副本。在本地副本上,你可以无限制的修改、测试,而无需任何的审批和预先的review。

例如,你要维护一个网站内容,你就可以在本地构建网站副本。然后再本地修改浏览,确保代码完全无误后,再将变化push到远程仓库。你push你的变化后,你们的测试根据你commit(可能关联某个问题或者bug修复),clone一份或者pull一份代码变化到本地,然后测试功能,确保问题解决,或者功能生效。当然这一部分完全可以自动化完成,就是github或者gitlab的CI/CD(持续的集成和发布),虫虫以后会介绍这些内容。

下载到本地的repo的副本称为"clone"。克隆repo与一般的项目下载不一样,除了项目文件本身,clone还会为附带下载仓库的所有版本变化信息。您可以使用git clone url命令克隆一个仓库,url可以在项目的"clone and down"按钮下找到。

注意Url分两种:https和ssh。如果你clone一个别人共有仓库的时候,只能用https形式,否则你没有任何权限通过ssh clone。你的单独工作环境(branch)

git项目通常不同的贡献者将对同一个仓库进行大量的更新。为了实现这种特性,git让你可以在同一个仓库创建许多不同版本,脱离主线版本做修改,这些不同版本,称为"分支"。分支管理是git版本控制的最大优势之一,git分支管理基于指针来实现,所以分支的创建,切换和合并都非常快捷,几乎没有任何资源消耗。每个人都可以使用分支创建一个单独的工作环境,对其做任何的修改操作,不影响其他分支版本,当确保没有任何问题时,再通过分支合并,把变化合并到主线版本上来。所有仓库,都会有一个主版本,叫Master,一般也会创建一个Develop分支用来做为开发版本。分支机构和仓库目录之间的关系

你可能会想把每个分支想象成你的项目文件的不同副本,但技术上分支不是副本,前面我们也说过了,不过是通过用指针将其指到了某个commit下而已。

你将在计算机上的同一目录中与你的仓库中所有分支进行交互。当你在那个目录下时,你总是会看到那个目录的一个版本(一个分支)。

当你切换到一个不同分支时,你目录中的大部分文件也会改变,看起来就像你刚刚选择的版本。但是,如果你保存了对任何文件的更改,则这些更改将与上次保存时保持一致,而不管你检出哪个分支。 Git总能知道你已经更改这些文件,并且正在等待你告诉它哪个版本的项目要添加(git add)更改(或者告诉它你不想保留更改)。

维护人员只能查看已添加到分支的更改。分支告诉他们哪个版本的仓库与他们的哪个版本进行比较。当然你分支除非你push到远程仓库,否则其他任何人都是看不到的。

相关阅读

  • 甘肃:项目建设为高质量发展插上腾飞的翅膀

  • 原标题:(喜迎省两会·盘点2022)甘肃:项目建设为高质量发展插上腾飞的翅膀回望来时路,建设幸福美好新甘肃迈出坚实步伐;展望新征程,真抓实干谱写富民兴陇新篇章。2023年是全面贯彻
  • 5个新能源项目同日集中开工

  •   合肥新能源汽车产业迎来“开门红”,1月7日,国轩年产50GWH(千兆瓦时)电池回收项目、年产200GWH复合集流体项目、年产2万吨电池级碳酸锂提纯项目,易昌旺年产12万吨改性石墨负
  • 横琴粤澳深度合作区勤政公寓项目顺利竣工验收

  • 1月6日,由中铁建设集团承建的横琴粤澳深度合作区勤政公寓项目顺利通过竣工验收,392套精装修公寓即将实现“拎包入住”。勤政公寓项目位于合作区大小横琴山间,紧邻澳门新街坊片
  • 我县集中签约一批文旅项目

  • 1月6日,我县举行文旅项目集中签约仪式,现场签约一批文旅项目。县委书记李勇,县委副书记、县长彭方建,县领导田浩、仇文娟、李三军,相关单位、乡镇负责人及项目投资商等参加签约仪
  • 忻州市召开雄忻高铁项目视频推进会

  • 忻州日报讯(记者 刘鑫林)1月6日,雄忻高铁项目2023年第一次视频推进会议召开,市委常委、常务副市长赵新年主持会议并讲话,市发改委、市公安局、市规划和自然资源局等相关部门负责
  • 军体运动会,“燃”爆寒冬

  • 近日,77集团军某旅隆重举办第五届军事体育运动会,几百名运动员奋力拼搏,在竞技场上演了一场速度与激情、体力与意志、血性与胆气的较量。▲400米障碍比赛现场此次军事体育运动

热门文章

  • OPPO k1的低价高配真实么?网友:不看不知道

  • 近日OPPO一款新机OPPO k1,摒弃了高价低配,就连自家老大哥r17都要怼一下。更是放弃了请代言人,以往的OPPO手机还没出来,各路流量小生,花样美男的代言就先来了。还有线下销售人员的
  • 一招教你手机无限制成为一台新设备

  • 大家平时用手机去注册app,肯定会遇到检测设备异常,交易关闭,等问题 这个都是手机已经不止1-2次注册过此app,不断更换手机仅是一个暂时的方法,却不是长久之计,手机总归会用完
  • 从零开始如何开网店

  • 随着互联网的高速发展,人们的生活发生了翻天覆地的变化,生活节奏越来越快,网购已经成为家家户户生活中离不开的一种购物方式了。网购的发展使得越来越多的人想要涉足电商事业,那

最新文章

  • 文安:狠抓末端落实 提升奔跑质效

  • 1月6日,文安县委召开十三届三次全会。全县上下将进一步解放思想、奋发进取,狠抓末端落实,提升奔跑质效,持续营造“奔跑起来、跨越赶超”的浓厚氛围,不断开创冲刺廊坊第一梯队的崭
  • 市体育局:推动党的二十大精神落地落实

  • 为学习宣传贯彻党的二十大精神,1月5日上午,市体育局举行党的二十大精神宣讲报告会。市体育局党组书记、局长王洪生围绕党的二十大主题、主要成果以及下一步工作重点等多个方面
  • 早安!出行气象来了(2023年1月9日)

  • 受小到中雪或雨夹雪影响的主要路段有:哈同高速(G1011)黑龙江胜利—方正—依兰—佳木斯段鹤大高速(G11)黑龙江鹤岗—佳木斯段201国道黑龙江鹤岗—佳木斯—桦南—七台河—鸡西
  • “警”色|守护泉城经济社会高质量发展

  • 提到公安,很多人第一时间想到的是守护城市安全。然而在济南,守护安全背后的公安队伍也在默默助力着经济社会高质量发展。1月6日,新年伊始,济南市公安局召开新闻通报会,面向社会解
  • 警惕!冬季预防一氧化碳中毒

  • 随着冬季的到来,天气逐渐变冷,在取暖过程中总会发生不安全事件——一氧化碳中毒。1、什么是一氧化碳?一氧化碳是一种常见的无色、无嗅、无味、无刺激性的有害气体,素有“无形杀