在某乎上刷到一条关于 GitHub 的留言,如下:


点赞人数还不少,这说明还真有不少工科生不会用 GitHub,你看大小写都没有区分(手动狗头)。所以我就想写篇文章科普下,“新手如何使用 GitHub?

01、GitHub 是什么

维基百科是这样定义的:

GitHub 是通过 Git 进行版本控制的软件源代码托管服务平台,由 GitHub 公司的开发者 Chris Wanstrath、PJ Hyett 和 Tom Preston-Werner 使用 Ruby on Rails 编写而成。

那 Git 又是什么呢?

再来看维基百科的定义:

Git 是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于 2005 年以 GPL 协议的形式发布,最初目的是为更好地管理 Linux 内核开发。

简单点说就是,Git 是一个命令行工具,一个分布式的版本控制系统。它可以在背后默默地帮你管理和跟踪代码的历史版本,就好比一个时光机,让你在代码出错时不至于手足无措,快速回退到之前的历史版本。

想了解更多 Git 方面的知识,可以点击这个链接跳转:

https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-Git-%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F

很多初学者误认为 Git 就是 GitHub,但其实不是的。GitHub 是一个代码托管网站,只不过背后使用了 Git 作为版本管理工具。主要服务就是将你的项目代码托管到云服务器上,而非本地硬盘上。类似的网站还有 gitlab.com 和 gitee.com(国内版,中文名叫码云)。

02、GitHub 可以做什么

Do whatever you want.

上面这个答案是创始人之一 Chris Wanstrath 说的,我表示无法反驳。

1)托管代码

GitHub 会自动帮你记录代码的修改,在必要的时候,能够帮助你快速回退到之前的历史版本。

2)搜索开源项目

GitHub 是世界顶级开发者的聚集地,在这里你几乎可以找到任何你想要的东西。上面分享有许多优秀、著名的开源项目,在遵守其 License 的前提下,你可以免费使用、下载这些开源项目。这也是 GitHub 最为吸引人的地方。

通过下面这个网址可以查看 GitHub 上 TOP 200 的优质开源项目:

https://www.githubs.cn/top

其中就包含了我前段时间给大家推荐的 GitHub 上最励志的计算机自学教程


中文版离线 PDF 下载地址如下所示:

https://pan.baidu.com/s/1tOyMq3sGa2-xuajGJJYwOQ,提取码:om0i

关于优质项目的搜索,你可能需要一些技巧:

https://juejin.im/post/6891056415440535565

你可能还需要一些方法:

https://www.zhihu.com/question/20084458/answer/1368411995

3)使用 GitHub Pages 搭建一个免费的博客网站

GitHub Pages 提供静态网页托管服务,它直接从 GitHub 上的仓库获取 HTML、CSS 和 JavaScript 文件,然后构建并发布网站。

配合 Jekyll、Hexo、Hugo、Pelican、Gridea 等第三方静态模板系统可以快速搭建一个漂亮的博客网站。比如说我的个人博客用的就是 Jekyll,访问地址如下:

http://www.itwanger.com

4)学习,提升能力

GitHub 有太多太多优质的教程资源,只要你肯去挖掘。下面这个网址列出来的资源都不错。

https://www.githubs.cn/awesome

比如说面试和刷题:


下面这个网址列举了一些非常不错的书单:

https://github.com/itwanger/JavaBooks

5)提升影响力

你可以将自己的开源项目发布到 GitHub 网站上,项目越受欢迎获得的 Star 越高,说明业界对你的能力越认可。一份优秀的 GitHub 主页,能为自己的简历润色不少。

我最喜欢的两个实战项目(推荐过无数次了),来自我的好朋友江南一点雨和 macrozheng。

微人事(19.2k star)的地址:

https://github.com/lenve/vhr

电商系统(43.1k star)的地址:

https://github.com/macrozheng/mall

当你看到这么多 star 的项目,并且真的是名副其实的好项目,是不是就特别佩服它们的作者,实话实说,我既是他们的朋友也是他们的粉丝。

6)其他

  • 图床,单纯地把 GitHub 做一个网盘。
  • BBS,单纯地交友互动聊天吹逼。
  • 翻译,之前有阿里的朋友就利用 GitHub 重写了一本《Java 并发编程》,在线访问地址:

https://github.com/RedSpider1/concurrent

离线版的 PDF 下载地址:

https://pan.baidu.com/s/11Z-IfAPEZNFWp_mAtqDIKw,提取码:drjx

03、注册 GitHub 账号

说了这么多 GitHub 的好处,还等什么,赶紧去注册一个 GitHub 账号吧!

https://github.com/join

一个 GitHub 账号除了可以作为交友的名片,当然也可以用来登录一些英文的学习网站,比如说 GeeksforGeeks


04、下载 GitHub 桌面版

当然可以直接在 GitHub 网页上操作,不过,对于新手来说,一个 GitHub 桌面版更方便、更直白、更傻瓜式一些。

https://desktop.github.com/


05、创建新项目

我现在要写一个《教妹学Java》的专栏,需要一个仓库来存储代码,怎么做呢?

打开 GitHub 桌面版,选择「File」→「New Repository」。然后填写仓库名、简介,选择仓库存放的本地路径,就可以点击「Create Repository」 创建新项目了。


创建完成后,可以在网页端看到该仓库。


(咦,怎么刚创建就有 star 了?)

06、fork 项目

如果你在逛 GitHub 的时候,发现了一些不错的项目,想占为己有,那太方便了,只需要一个 fork 就能搞定。

前几天,我发现了一个很有意思的项目:state-of-the-art-shitcode,中文译作垃圾代码书写准则。不过,代码示例是用 JavaScript 编写的,并且中文翻译得很烂。


怎么办呢?fork 它,然后就可以重制成 Java 版,并且按照我的风格进行翻译。


07、克隆项目到本地

GitHub 的一个好处就是,它把项目存放在云端,当你需要的时候,只需要克隆到本地就可以了。

打开 GitHub 桌面版,选择「File」→「Clone Repository」。 可以直接克隆你账号下的项目,包括你创建的、fork 的、star 的。


也可以通过 URL 的形式进行克隆,这时候,还可以指定码云上的项目进行克隆。


08、编辑项目

建议你在电脑上安装 Sublime Text,一款颜值非常高的文本编辑器,安装成功后,GitHub 桌面版默认自动使用它来关联项目。


打开后,是这样的(见下图),不得不说,颜值真的高。


编辑一段文字后保存,可以在 GitHub 桌面版看到发生变化后的文件。


填写文件更改后的描述就可以点击「Commit to master」(GitHub 从 10 月份起将 master 更名为 main)按钮提交了。


点击「Push origin」 可以同步到 GitHub 云端仓库。

09、回退到历史版本

如果一不小心提交错了,怎么办呢?

点击「History」 面板,找到你要回退的历史版本,右键选择「Revert this Commit」。


再次点击「Push origin」就可以了。


10、同步云端

GitHub 可以多人协作,如果本地想和云端保持同步,可以在 GitHub 桌面版上点击「Fetch origin」


如果发现本地和云端有不一样的地方,就可以点击「Pull origin」 从云端拉取了。


11、还想进阶

通过以上这些基本操作,我想你一定会用 GitHub 了。


反正入门嘛,先不要去管 issue 啊、pr 啊、wiki 啊,能够迅速地通过实战得到反馈对于学习一门新的技能来说实在是太重要了。只要入了门,有了信心,你会爱上 GitHub 的。

如果你不满足于现状,还想更进一步,可以到 GitHub 官方按照课程进行学习。

https://lab.github.com/


除此之外,我再推荐给你一本不错的入门书籍《GitHub入门与实践》:


码字不易,希望你们能够喜欢,如果能够对你起到一点点帮助,那就太好不过了!

温馨提醒一点,记得让它躲进收藏夹吃灰哦,顺带点个赞就更好了!

文科妹子都会用 GitHub,你这个工科生还等什么的更多相关文章

  1. 入坑 docsify,一款神奇的文档生成利器!

    layout: postcategory: javatitle: 入坑 docsify,一款神奇的文档生成利器!tagline: by 沉默王二tags: - java Guide 哥是我认识的一个非 ...

  2. 怎样使用 GitHub?

    作者:珊姗是个小太阳链接:https://www.zhihu.com/question/20070065/answer/79557687来源:知乎著作权归作者所有,转载请联系作者获得授权. 作为一个文 ...

  3. 转:怎么使用github(通俗易懂版)

    转:  https://www.zhihu.com/question/20070065 作者:珊姗是个小太阳链接:https://www.zhihu.com/question/20070065/ans ...

  4. github使用-知乎的某小姐的一篇文章

    作者:珊姗是个小太阳链接:http://www.zhihu.com/question/20070065/answer/79557687来源:知乎著作权归作者所有,转载请联系作者获得授权. 作为一个文科 ...

  5. 怎样使用github?(转)

    怎样使用github?(转) 转自: 怎样使用 GitHub? - 知乎https://www.zhihu.com/question/20070065 珊姗是个小太阳 ❤努力做最胖//bang的健身博 ...

  6. Github入门 - Github基本使用及Github桌面版使用

    知识内容: 1.版本控制 2.Git介绍 3.Github介绍及基本使用 4.Github桌面版介绍及安装 5.Github桌面版基础使用 6.Github桌面版进阶使用 参考: http://www ...

  7. get github

    Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.目前,包括Rubinius ...

  8. Github的第三方验证

    Github的第三方验证 随着近年来网络安全越来越受到重视,对于用户认证和用户信息保存模块的开发也提升到了一个新的高度. 一般小型网站开发的时候,由于技术水平和时间成本有限,很有可能会开发出一些或大或 ...

  9. Github--账号重新申请与配置

    2017-04-24 最近洗心革面痛下决心要好好再深入学习一番前端,正好加入了一个外包团队接了份单子,外包项目正在如火如荼地进行着,自己也打算趁这个机会来好好学习总结一番. 但是俗话说得好," ...

随机推荐

  1. [学习笔记] Tarjan算法求强连通分量

    今天,我们要探讨的就是--Tarjan算法. Tarjan算法的主要作用便是求一张无向图中的强连通分量,并且用它缩点,把原本一个杂乱无章的有向图转化为一张DAG(有向无环图),以便解决之后的问题. 首 ...

  2. 创建好maven项目以后发现无法创建scala文件

    今天创建了一个maven项目  然后准备创建scala文件的时候发现没有Scala 然后只好上网上找方法了 下面是一种解决方法 1.点击file,选择settings 进去之后,选择build  进去 ...

  3. html ul li 自定义宽

    1. ul里面的样式  2. ul li 里面的样式

  4. shell-的特殊变量-难点理论

    一:shell的特殊变量-难点理论  1. $*和$@的区别例子     $* 将所有的命令行所有参数视为单个字符串,等同于"$1$2$3"     $@ 将命令行每个参数视为单独 ...

  5. CMD/ENTROYPOINT区别

    CMD/ENTROYPOINT区别 相同点:都是指定一个容器:启动时要运行的命令 不同点(重点): CMD: dockerfile中可以有多个CMD指令,但是只有最后一个生效,CMD会被docker ...

  6. 解决VMware无法共享ubuntu虚拟机文件

    1.错误信息:无法更新运行时文件夹共享状态:在客户机操作系统内装载共享文件夹文件系统时出错 2.检查vmware tool是否正确安装 lsmod | grep vmhgfs modprobe vmh ...

  7. kubernetes:用label让pod在指定的node上运行(kubernetes1.18.3)

    一,为什么要为node指定label? 通常scheduler会把pod调度到所有可用的Node,有的情况下我们希望能把 Pod 部署到指定的 Node, 例如: 有的Node上配备了速度更快的SSD ...

  8. 边界层吞吸技术(BLI)

    气流在机体表面前进时,由于受到摩擦,其速度会不断降低,从而会产生湍流甚至气流分离,而流动分离又会造成大量紊流.涡,使升力大量损失,同时也会造成阻力急剧增加.边界层吞吸技术就是一种对附面层气流" ...

  9. java中true不是关键字?

    java中true ,false , null在java中不是关键字,也不是保留字,它们只是显式常量值,但是你在程序中不能使用它们作为标识符. 其中const和goto是java的保留字.java中所 ...

  10. MFiX-DEM中的串行碰撞搜索

    在计算颗粒碰撞的时候,需要进行neighbor颗粒的搜寻,只知道大概是基于网格与颗粒绑定的方式,但是具体的实现方式还是比较模糊.搜寻部分代码如下 (mfix-19.2.2): 可以直接观察到的是,这里 ...