GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。GitHub拥有1亿以上的开发人员,400万以上组织机构和3.3亿以上资料库,它是开放、自由、分享和协作的,每个人都可以在上面创建仓库、贡献代码、提出pull request请求、参与讨论和交流技术。
功能
作为开源代码库以及版本控制系统,随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。
1.代码托管功能:
将代码托管到GitHub上可以实现代码的备份和恢复,哪怕本地的代码丢失或者损坏,也可以从GitHub上下载最新的代码。同时,在GitHub托管时,还可以选择公开或私有地托管,它提供了版本控制功能,开发者可以跟踪文件的每个版本和更改历史,从而可以回滚到早期版本或查看特定更改,管理不同的版本。
2.分支管理功能:
分支管理有利于团队的开发,促进团队协作。每个开发者可以在主代码库的独立分支上独立地进行修改、添加和删除代码,这让团队在工作时,能够保持独立,互不干扰,在不影响主代码库的情况下进行实验和开发,但是又可以保持团队进度,和其他人进度保持同步,避免混乱。单独分支完成后,开发者可以让其他团队成员审查和讨论更改该单独分支,最后当新功能开发完成或者错误修复完毕时,可以将这个分支合并回主分支,从而实现代码的整合,简化合并过程。开发者在编写代码时,每一个分支都可以用于处理一个特定的版本。这样可以方便地跟踪不同版本的代码变化,也能够进行版本回退、撤销操作,不用担心破坏主分支上的代码。团队可以更灵活、高效地工作,同时保持代码的整洁、可维护性和稳定性。
3.版本控制功能:
GitHub基于Git提供了版本控制的功能,允许开发者查看代码的历史版本,管理文件的修改和更新。版本控制系统能够记录代码中的每一次修改,并进行详细的记录。如果因为最新的更改导致了问题,可以回滚到之前的某个状态,撤销更改。在软件的开发和网站的开发中,起到非常重要的作用。
4.合并请求功能:
开发者可以通过合并请求来贡献代码到其他项目,也可以用来审查和讨论代码更改。
当开发者在完成一个功能或对其中的代码进行修改之后,可以创建一个合并请求,将更改合并到主分支。当请求通过以后,其他开发者可以审查这些更改,提供反馈,讨论代码,提出问题和建议,查找其中可能出现的问题,以确保代码的质量。合并请求提供了一个非常清晰的界面,展示两个分支之间的差异和提交历史。
5.问题跟踪功能:
用户可以报告bug,提出新功能请求,或讨论项目相关的话题。问题跟踪功能可以记录发现的任何问题、错误或功能请求,并附加相关的详细信息,如重现步骤、影响范围和优先级,还可以对问题进行分类、标记、分配和设定优先级,在团队合作中有巨大的作用,还可以不同状态进行转换,了解进展情况。
3.社区交流功能(参考https://www.php.cn/faq/510900.html):
在GitHub上,作者和用户之间的交流非常方便和及时。每个仓库都有自己的Issues功能,可以让作者和用户之间进行交流和讨论。当用户发现开源项目中存在问题或者有新的想法和建议时,可以通过Issues功能创建一个新的问题,并作为一个讨论的中心展开交流。作者可以在Issue中回复用户的问题,解决用户遇到的问题,也可以接受用户的建议,并将其纳入下一次迭代中。通过这种方式,作者能够及时获得用户的反馈和建议,改进代码和项目,并让用户感觉到他们的意见和贡献得到高度重视。
GitHub还提供了强大的Pull Request功能,可以让用户向开源项目贡献自己的代码、修复bug、提交新功能等。用户将修改后的代码提交到自己Fork出的该项目的仓库中,然后发起Pull Request请求,请求原项目的管理者审核并接受其贡献。通过这种方式,用户可以为开源项目做出贡献,并得到社区的认可和赞誉。这种贡献方式不仅帮助优化代码、提高项目品质,也能够建立作者和用户之间的良好沟通和信任关系。
还有其他的交流工具,例如Wiki、Discussions等,都可以帮助作者和用户之间进行交流,并更好地管理和组织开源项目。
存储库(参考https://github.highlight.ink/git-handbook/repositories)
用于存放代码和其他相关文件的集中位置。每个存储库通常与一个特定的项目相关联,并且包含该项目的所有历史版本和变更记录,拥有仓库副本的任何人都可以访问整个代码库及其历史记录。使用命令行或其他易用的接口,git 仓库还允许:与历史记录、克隆、创建分支、提交、合并和比较不同代码版本之间的变更等进行交互。存储库是软件开发和其他协作工作的基础,它们确保了代码的安全、稳定和可追踪性。通过使用存储库,团队可以更好地组织工作流程,提高开发效率,并促进项目的透明度和合作。
特点(参考https://www.cnblogs.com/AAAA6/p/17444220.html)
1.从代码自动化到云:使用GitHub Actions通过GitHub Packages和内置CICD更快地循环生产代码并简化工作流。
2.自动化工作流:在管理代码的同一个位置以所需方式生成、测试、部署和运行CICD。从任何GitHub事件到任何可用API触发Actions。使用所选语言生成Actions,或从社区创建的数千个工作流和Actions 中进行选择。
3.带有代码的家庭包:使用Actions将新的包版本自动发布到GitHub Packages。在CICD工作流中安装托管在GitHubPackages或首选包注册表上的包和映像。它对于开放源代码始终免费,Actions 内的数据传输对所有人都无限制。
4.共同保护软件安全:GitHub在保护全球代码安全方面扮演着重要的角色-开发人员、维护人员、研究人员和安全团队。在GitHub上,各地的开发团队都可以协同工作,以保护全球软件供应链的安全,从分支到完成。
5.获取有关代码中漏洞的警报:GitHub持续扫描常用语言的安全建议。此外,此功能还会向受影响的存储库的维护人员发送安全警报,并提供详细信息,以便他们能够修正风险。
6.自动更新漏洞:GitHub监视项目依赖项,并自动打开拉取请求,以将依赖项更新为可解决已知漏洞的最低版本。
7.查找其他工具忽略的漏洞、更快地识别安全漏洞、自动更新漏洞和获取有关代码中漏洞的警报:GitHub持续扫描常用语言的安全建议。此外,此功能还会向受影响的存储库的维护人员发送安全警报,并提供详细信息,以便他们能够修正风险,共同保护软件安全。
8.消除变体:永远不会再犯相同的错误。确保令牌安全。
优缺点(https://zhuanlan.zhihu.com/p/165102324)
优点
1.几乎拥有全世界最多的开源代码,有众多非常知名的开源项目。
2.支持多人共同完成一个项目,bugs 可以公开。
3.可以免费建私有仓库了,并且仓库数量无限制
缺点:
1.只提供英文。
2.只支持 git 格式代码托管,不对 csv,svn,hg 等进行支持。
3.免费的私有仓库只能同时允许最多三个协作者
4.国内对github的访问速度慢
5.保护分支收费