源代码管理工具
Github是什么,有什么用?
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git
作为唯一的版本库格式进行托管,故名GitHub。GitHub 于 2008 年 4 月 10 日正式上线,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。目前,其注册用户已经超过 350 万,托管版本数量也是非常之多,其中不乏知名开源项目 Ruby on Rails、jQuery、python 等。
2018 年 6 月 4 日,微软宣布,通过 75 亿美元的股票交易收购代码托管平台 GitHub
简单来说,GitHub是一个代码托管云服务网站,帮助开发者存储和管理其项目源代码,且能够追踪、记录并控制用户对其代码的修改。
甚至你可以简单粗暴的把它当作一个网盘,用来存储任何东西。
Windows
GitHub 使用 git 分布式版本控制系统,而 git 最初是 LinusTorvalds 为帮助Linux开发而创造的,它针对的是 Linux 平台,因此 git 和 Windows 从来不是最好的朋友,因为它一点也不像 Windows。GitHub 发布了GitHub for Windows,为 Windows 平台开发者提供了一个易于使用的 Git 图形客户端。
GitHub for Windows 是一个 Metro 风格应用程序,集成了自包含版本的 Git,bash 命令行 shell,PowerShell 的 posh-git 扩展。GitHub 为 Windows 用户提供了一个基本的图形前端去处理大部分常用版本控制任务,可以创建版本库,向本地版本库递交补丁,在本地和远程版本库之间同步。微软也通过CodePlex向开发者提供 git 版本控制系统,而 GitHub 创造了一个更具有吸引力的 Windows 版本。
配置管理
编辑1.托管代码、历史版本管理
当然不仅仅是代码,任何文件都支持(不少人用GitHub来写博客)。它会自动帮你记录代码的修改,在必要的时候,能够帮助你快速回退到之前的历史版本。
GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的"fork"的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的"pull request"机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace。GitHub项目本身自然而然的也在GitHub上进行托管,只不过在一个私有的,公共视图不可见的库中。开源项目可以免费托管,但私有库则并不如此。Chris Wanstrath,GitHub的开发者之一,肯定了通过付费的私有库来在财务上支持免费库的托管这一计划。
2.搜索开源项目
GitHub是世界顶级开发者的聚集地,在这里你几乎可以找到任何你想要的东西。上面分享有许多优秀、著名的开源项目,在遵守其License的前提下,你可以免费使用、下载这些开源项目。这也是GitHub最为吸引人的地方。👉 看看GitHub开源项目排行榜
👉 正在使用GitHub的企业与组织
3.分享的同时会得到社区的回馈
GitHub可以说是共产主义的最佳实践之一。其一大优势是协同开发,你分享出来的项目,其他开发者也可以参与贡献,帮助你一同完善项目功能,Bug修复,代码质量提升。
4.使用Github Pages服务,你可以免费搭建一个博客网站
GitHub Pages
提供静态网页托管服务,它直接从 GitHub 上的仓库获取 HTML
、CSS
和 JavaScript
文件,然后构建并发布网站。 您可以在 GitHub Pages 示例集合中查看 GitHub Pages 站点的示例。
GitHub 提供免费的 github.io
子域,也支持自定义域名。
5.学习,能力提升
GitHub上有很多优秀开源项目和教程资源值得你去发现、学习
👉GitHub面试、学习资源精选
6.提升自己的影响力
你可以将自己的开源项目发布到GitHub网站上,项目越受欢迎获得的Star越高,说明业界对你的能力越认可。一份优秀的GitHub主页,能为自己的简历润色不少。
GitHub和Git的关系与区别
很多初学者分不清GitHub和Git的关系,误认为Git等同于GitHub,其实它俩完全是两码事,不能相提并论。要说有关系那就是,「魔兽争霸」与「对战平台」的关系。
简单来说,Git只是一个命令行工具,一个分布式版本控制系统。正是它在背后管理和跟踪你的代码历史版本,好比一个时光机,让你在代码出错时不至于手忙脚乱,能快速回退之前的历史版本。 类似的工具还有SVN
而GitHub是一个代码托管网站,背后使用Git作为版本管理工具(而非svn)。主要服务是将你的项目代码托管到云服务器上,而非存储在自己本地硬盘上。
类似的网站还有gitlab.com,bitbucket.com,coding.com(国内),gitee.com(国内)
官网主页
新手教程
Git的基础
管理历史记录的数据库
数据库 (Repository) 是记录文件或目录状态的地方,存储着内容修改的历史记录。在数据库的管理下,把文件和目录修改的历史记录放在对应的目录下。
远程数据库和本地数据库
首先,Git的数据库分为远程数据库和本地数据库的两种。
- 远程数据库: 配有专用的服务器,为了多人共享而建立的数据库。
- 本地数据库: 为了方便用户个人使用,在自己的机器上配置的数据库。
数据库分为远程和本地两种。平时用手头上的机器在本地数据库上操作就可以了。如果想要公开在本地数据库中修改的内容,把内容上传到远程数据库就可以了。另外,通过远程数据库还可以取得其他人修改的内容。
创建数据库
创建本地数据库的方法有两种:一种是创建全新的数据库,另一种是复制远程数据库。
修改记录的提交
若要把文件或目录的添加和变更保存到数据库,就需要进行提交。
执行提交后,数据库中会生成上次提交的状态与当前状态的差异记录(也被称为revision)。
如下图,提交是以时间顺序排列状态被保存到数据库中的。凭借该提交和最新的文件状态,就可以知道过去的修改记录以及内容。
系统会根据修改的内容计算出没有重复的40位英文及数字来给提交命名。指定这个命名,就可以在数据库中找到对应的提交。
Tips(小贴士 )
不同类别的修改 (如:Bug修复和功能添加) 要尽量分开提交,以方便以后从历史记录里查找特定的修改内容。
执行提交时,系统会要求输入提交信息。请务必输入提交信息,因为在空白的状态下执行提交会失败的。
Tips(小贴士 )
查看其他人提交的修改内容或自己的历史记录的时候,提交信息是需要用到的重要资料。所以请用心填写修改内容的提交信息,以方便别人理解。
以下是Git的标准注解:
第1行:提交修改内容的摘要 第2行:空行 第3行以后:修改的理由
请以这种格式填写提交信息。
工作树和索引
在Git管理下,大家实际操作的目录被称为工作树。
在数据库和工作树之间有索引,索引是为了向数据库提交作准备的区域。
Git在执行提交的时候,不是直接将工作树的状态保存到数据库,而是将设置在中间索引区域的状态保存到数据库。因此,要提交文件,首先需要把文件加入到索引区域中。
所以,凭借中间的索引,可以避免工作树中不必要的文件提交,还可以将文件修改内容的一部分加入索引区域并提交。
使用Github的好处
链接:https://zhuanlan.zhihu.com/p/49500971
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
寻找 Demo 节省时间
在工作上使用新的技术,和自己平时的练习,终究差得有些远。工作的时候,我们偏向于目标编程,对于速度和时间的要求,要比自己业余时间要高得多。一旦有了这种压力,便会在 GitHub 上寻找相应的 Demo,了解原理、稍微尝试,再引入到项目中。
这时,便会按技术栈的关键字搜索,并按更新时间进行排序,以查找是否有合适的 Demo。
生命有限 ,如若是每次我们尝试一个新的技术,总得自己编写一个个 Demo。编写多个 Demo,都得花去个半天八小时的时间。如此一算,能花费在其它事情上的时间便更少了。若只是试用官方的 Demo,往往是比较容易的。可我们编写应用的时候,总得结合到当前的场合来。这时整合并不是一个轻松的工作,依赖冲突、引入第三方依赖等。
温馨提醒:对于简单的项目来说,自己直接写 Demo 会更加方便。尝试项目需要成本,若是需要尝试使用多个项目,那么有可能就浪费时间。
寻找脚手架:加快前期开发
无论是后端的微服务架构,还是前端应用,应用的架构正在变得复杂。后端微服务,需要结合一个个的框架,哪怕是 Spring Initializr
这样的工具,也只能帮助我们搭建项目。我们还需要配合其它工具,一起搭建出一个基本的系统。对于前端应用也是类似的,若是 Angular 这样大而全的框架,时间花费倒也是不多。如 React 这种需要组合的、小而美的框架,使用官方的 create-react-app
也很难做出我们想要的东西,寻找一个合适的脚手架是一个更好的选择。
这时,我们大抵可以,直接使用技术栈 + boilerplate
又或者是 starter
等关键词进行搜索,如 react boilerplate
。如果其中找到的组合技术栈,不符合自己的要求,那么再加上相应技术栈的关键字,如 react redux boilerplate
即可。有意思的是,在这时使用 Google 会比 GitHub 方便一些。
温馨提醒:我们需要衡量:修改脚手架的成本,是否比自己重头写快。
寻找 awesome-xxx:探索可能性
练习新的框架,我总习惯于,编写一系列相关的 DEMO 项目,然后使用 awesome-xxx 探索可能性。
Awesome-xxx 系列,是 GitHub 上最容易赚 star 的类型。但凡是有一定知识度的领域、语言、框架等,都有自己的 awesome-xxx 系列的项目,如 awesome-python, awesome-iot, awesome-react 等等。在这样的项目里,都以一定的知识体系整理出来的,从索引和查阅上相应的方便。如果你想进入一个新的领域,会尝试新的东西就搜索 awesome xxx
吧。
温馨提醒:awesome-xxx 只意味着它们包含尽可能多的资料,并不代表它们拥有所有相关的库。
模仿轮子的轮子
大学时,我在练习写嵌入式操作系统,uC/OS-II 对于初学者的我来说,太复杂了——有太多无关的代码。便在网上找寻相关的实现,也便是找到了一些,在那的基础上一点点完善操作系统。
学习一个成熟的框架,直接阅读现有源码的成本太高,毕竟也不经济。最好的方式,就是去造轮子。从模仿轮子之上,再去造轮子,是最省力气的方式。再配合 《造轮子与从Github生成轮子》 一文,怕是能写一系列的框架。而造一个相似轮子的想法,往往很多人都有。尤其是一个成熟的框架,往往有很多仿制品。
于是,当你想了解一个框架,造个轮子,不妨试试搜索 xxx-like
或者 xxx-like framework
,中文便是 仿 react 框架
或者 类 react
。如我们在 Google 上搜索 react-like
就会搜索到 inferno
。不过,按 GitHub 的尿性,要搜索到这样的框架,并不是一件容易的事。这时 Google 往往比 GitHub 搜索好用。
所以建议:平时上班休息时,搜索相关的轮子,回家就可以造轮子了。
学习资源
GitHub 上拥有大量的学习资源,从各类的文章到笔记,还有各式各样的电子书。如:
- 只需要搜索:
类型 + 笔记
,如操作系统 笔记
就能找到一些操作系统相关的笔记。 - 只需要搜索:
书名
就能找到一些和这本书相关的资源,如重构 改善既有代码的设计
。
与此同时,GitHub 上还会搜索到各种 未经授权英文书籍的翻译,又或者是各种电子书的 PDF 版。作为多本书的作译者,当然不鼓励 GitHub 上找到一些盗版书。
而在 GitHub 上又有一些库,可以提供相应的学习资源,如 free-programming-books-zh_CN,即免费的编程中文书籍索引。
建议:请尊重版权,哈哈哈。
密钥/密码
GitHub 上有太多这样的东西,尽管我没有能赶上个好时候,找到一个合适的密钥。有相关多的资料泄漏和数据库被扒,和 GitHub 上存在的密钥和密码有关。
不过,好在 GitHub 已经在着手解决这个问题:自动删除相关的提交、代码警告等等。
私有、商用的 SDK 或代码
总有人,会将一些商用的代码,或者公司内部的代码,提交到 GitHub 上。如果你偶尔看到这样的代码,除了每一时间告诉作者,还可以偷偷 Clone 一下代码——虽然这样做不对,但是我还是想看。
如在 ThoughtWorks 的面试流程里,有一个步骤是代码编程的作业,个人的实现是不能公开出来的。接到一份作业的时候,总会去 GitHub 搜索相应的代码是否被提交了。提交了,倒是也得提醒一下相应的候选人。
过去,我在使用 Phaser 编写应用的时候,对应的粒子系统是收费的。由于我只是尝试这个粒子系统,便没有购买的想法。我一想 GitHub 上可能有,于是搜索了对应的 particle-storm.js
,然后就中奖了。就便愉愉快快地去写我的 Hello, World,最后发现它太耗费资源了,便放弃了。
建议:一旦你在 GitHub 上拿到别人的商用代码,请仅用于学习,并时刻保持低调。稍有不慎,有牢狱之灾。
数据及数据制作工具
当我们需要数据的时候,就会考虑写爬虫。于是 GitHub 上充满了各各样的式爬虫,除此还有得同学把爬虫数据都放在上面了。某次,当我在玩 ElasticSearch 搜索引擎的时候,突然需要一些真实的数据用来测试。便得找爬虫,就在 GitHub 上,找到了大众点评的一些爬虫。
这个关键词,就是: scrapy dianping.com
,得来不费功夫。
除此,在 AI 相当流行的今天也是如此,也可以搜索到其它同学训练好的模型。
心得体会
我之前对Github只是听说过,但是完全不了解它,不知道它具体是什么,也不知道它的作用和功能。这次通过查询资料和实践应用,了解了GitHub的相关发展历程,熟悉了GitHub的一些基础的使用方法,也体会到了使用GitHub的一些方便之处。通过GitHub,我们既可以保存自己的代码文件,又可以从其他人的代码中进行学习,汲取经验。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步