Skip to content

HbGitHub

ishanshan edited this page Apr 28, 2018 · 22 revisions

简明 GitHub 练级攻略 | 安人集团

GitHub 是安人集团内部协同、文档管理工具,也是开智学堂课程常用的主题讨论、作业提交工具。它可供性极强,且内置很多专家级的内隐模式,如果使用得当,能极大降低个人创作、团队共创的的复杂度。

如果你初次接触,面对满屏难以理解的按钮,估计有些发怵;甚至查阅官方教程 GitHub GuidesGitHub Help,也依然满头雾水——里头各种操作不明觉厉,更别说对接上述俩场景啊。

别怕,没那么复杂。况且还有这份练级攻略,助你解决常见需求呢~

在那俩场景下,你只需把 GitHub 当成一个特殊的本地同步盘工具(类似 Dropbox 或坚果云,能把特定文件里的改动同步到云端)+ 主题讨论平台(类似论坛、BBS),就能应对大部分常规需求。更多高阶用法,可以先熟悉常用操作后,再按需取用。

一般来说,从初见 GitHub 到爱上 GitHub ,你会经历这三阶段:

各级别自学及自检指引可参考 安人集团协作技能自检清单(需科学上网才可访问),希望这系列攻略能助你更快如鱼得水,跃入三级 ;-)

在动身前,我需要给你一套行囊:

行前忠告

  • 使用新工具、接触新机制,不适应甚至痛苦一段时间是正常的。这个时间可能是 1-2 周甚至更久,请做好心理准备和生理准备——规律作息多运动,提升身体尤其大脑机能。
  • 遇到不懂的名词,请直接 Google 一下——这个习惯能让你无论学啥都能学得更快。一般翻阅搜索结果的 3-5 个页面,就能拨开不少脑中迷雾;-)
  • 进入一个页面,请先看一眼浏览器里的 URL ,看看它的结构 —— GitHub 产品架构优雅,凭页面 URL 你就能清晰判断现在在什么位置,不易迷失。当然,用非英文命名文件另当别论——如果文件名里出现非英文,这个文件 URL 会出现乱码,干扰对于当前位置的判断,而且 URL 很丑。
  • 多用关键词查找你想看的内容。在安人集团你会接触很多文档,且不少文档很长,比如这个。你想回看时,最好用关键词搜索以便快速定位,而非迷失于茫茫比特。
  • GitHub 蕴含很多专家级的内隐模式,学习曲线对你来说可能有点陡。但相信我,跨过后你将终身受益,发觉之前硬着头皮走出舒适区真是太明智:P

练级准备

攻略肯定不能只看不练对吧?——请完成下述准备后再翻攻略:

  1. 你已注册并登录自己的 GitHub 账号
  2. 你有可访问的仓库,可以自己新建一个测试仓库(Create A Repo - User Documentation),或 fork OpenMindClub/tacofancy 这个示例仓库来尝试

GitHub 世界的基本概念

踏入这个世界,你得先了解一些常用概念,比如常用界面、常用操作通常大伙儿如何描述。如此,出了问题,你才能准确描述、高效求助。要不出了问题都不知道用啥关键词搜索、跟别人描述,多闹心呐~

常用界面

来,先熟悉两个你接下来最常用的界面 repository & dashboard

repository

repository 是 GitHub 里最基础的元素,中文一般叫做「仓库」。 GitHub 是项目生发平台,一般来说,一个仓库就是一个项目资料的基本存储单位。比如你点击 https://github.com/OpenMindClub/tacofancy ,这就是这个项目仓库的首页。项目首页主要元素及作用如下:

hbgithub_repo_readme2.png

  • 1 GitHub logo: 点击直达 dashboard
  • 2 搜索框:可搜索本仓库所有内容,包括改动记录
  • 3 当前仓库全称
  • 4 code/issues/pull request/projects/wiki 导航栏
  • 5 commits 记录:点击即可查看本仓库历次改动记录。红色为这轮改动里删去的内容,绿色为这轮改动里新增的内容
  • 6 本仓库文件夹
  • 7 commit message:点击即可查看对应改动内容
  • 8 本仓库最后更新时间
  • 9 fork 按钮

(上述各英文什么意思在下文「高频操作」中可看到,具体如何使用,详见 「存活级别」攻略

仓库全称为 账号/仓库名 ,比如 OpenMindClub/tacofancysinker/tacofancy ,虽然仓库名相同都是 tacofancy ,但这是两个不同的仓库,OpenMindClub/tacofancyOpenMindClub 的仓库,sinker/tacofancysinker 的仓库。

在 GitHub 里,你可以创建个人项目,也可以创建团队项目。也就是说,你可以把仓库建在个人账号下,也可以建在团队账号(organization)下。且这俩账号的仓库可以相互转移,看仓库全称就能判断这个仓库属于谁。

仓库可以设置为 public(公开,所有人都可以查看)或 private(私有,有特定权限才可访问)。私有需要付费。若仓库名字后边有 private 标志,那就是私有库;你把这样的仓库发给别人,别人没有登录或没有访问权限,就会显示 404 。

仓库里还配套了相应项目协同模块,用法建议如下:

  • code: 一般用于存放项目主要成果

    比如公众号仓库,会在此放在编辑的和已发布文案;课程学员仓库,会在此放自己的作业、笔记;课程研发仓库,会在此放编写的卡包等。

    注意:每个仓库的免费存储空间为 100M ,所以幻灯、图片等多媒体资料,建议存放在云盘中而非 code 里。有钱也别把多媒体资料放这里,会阻碍协同成员的从同步速度。

  • wiki: 一般用于存放项目相关规约、指南等辅助资料

    wiki 其实同步到本地也是一个文件夹,和 code 的功能类似。但 wiki 模块右侧有 sidebar ,可以索引资料(包括但不限于本仓库内的资料),便于同伴取用。

    比如公众号仓库 wiki ,会汇总编辑手册、发布规约等常用资料;课程学员仓库 wiki ,会汇总课程表、学习指南等资料;课程研发仓库,则会汇总研发指南、协作教程等资料。

  • issue: 一般用于主题讨论、追踪议题

    界面样式有点类似论坛,功能特性见 Mastering Issues · GitHub Guides 。最大的好处是议题告一段落后可以关闭(close issue),以便保持主界面清爽。核心用法是持续追踪议题/任务,从发起、推进、解决到迭代等。

    例如你在 GitHub issues 发起了一个主题讨论,大家异步交流探讨。如果问题解决,你及时回复最新进展/共识到这个 issue 下,并关闭此 issue ,形成一个良性闭环。除了探讨疑问,你还可以用 GitHub issues 发起活动征集参与者;汇集资源,分享创意;提交 Bug……

  • project: 相当于看板(kanban),一个项目可以建好多张看板,还可以把 issue 引用到看板中

当然,你也可以根据特定项目需求及各模块的功能细节差异(需科学上网才可访问),自行决定如何使用这些模块。

友情提示:建议所有仓库同步到电脑本地的内容,都放在一个路径下,而非按不同主题放在不同路径。同步到本地的仓库越多,你会越发觉这样处理有多优雅。

dashboard

登录个人 GitHub 账号后,点击页面顶部菜单栏最左侧的 GitHub logo,即可进入 personal dashboard https://github.com/dashboard

Dashboard 页面是你 GitHub 的枢纽,由此你可以找到所有自己有访问权限的各类资源。你可以把 dashboard 想象成电梯里的按钮,通过它你可以直达你有权限的楼层(organization)及房间(repository),也能到对应楼层(organization)看看里头的动态(news feed),了解大伙儿都在做什么。

看过个人 dashboard ,细心的你一定发现,在页面右侧有你能访问的所有仓库列表。

再进入你所在 organization 的 dashboard 看看吧——

  • 点击左上角个人账号按钮:

    hbgithub_account_context_switcher.png

  • 切换到你想查看的 organization:

    hbgithub_account-context-switcher-selected-dotcom.png

  • 进入 dashboard 页面。页面主要元素如下:

    hbgithub_dashboard_org2.png

    • 1 搜索框:搜索当前 organization 下的内容
    • 2 dashboard 名字:说明现在你查看的是哪块 dashboard,比如是你自己的 dashboard,还是某个 organization 的 dashboard
    • 3 News Feed:当前 organization 或账号下的新动态
    • 4 News Feed/pull requests/issues 导航栏:点击可进入查看这些模块
    • 5 直达当前 organization 主页的入口
    • 6 当前 organization 仓库列表:你可以在此查找该 organization 下你有访问权限的仓库。列出来的仓库都是你有权限的,仓库名称有浅黄色背景的是私有库,白色背景的是公开库

注意:请一定记住如何进入 dashboard 页面,因为你会经常用到。 # 记不住就直接添加到收藏夹吧!

高频操作

再看一些高频操作:

  • fork: 可以一键创建项目副本。比如你看到某个项目特别好,但还想改改,就可以 fork 一份到自己的账号下,继续修改。改完后还可以申请合并到主库里。

    对了,fork 到自己账号后生成的仓库,我们一般称为 child repo ;被 fork 的仓库,称为 parent repo。

  • clone: 把云端仓库同步到本地。

  • commit: 标注说明你改了什么内容。

  • push: 把本地的改动同步到云端仓库。

  • pull: 把云端的改动同步到本地仓库。一般在修改团队的本地仓库前,最好先 pull 一下把本地内容更新成最新的,以免和别人发生版本冲突。

  • pull request: 修改了某个仓库后,跟仓库主人申请把改动合并到该仓库中。

  • merge: 合并不同版本的内容为一个可用版本。

以上概念更官方的解释,及更多 GitHub 概念,可见 GitHub Glossary - User Documentation。不过更建议你使用 GitHub 至少一周,对 GitHub 有更多直观的感知后别再查看哦。


好,大致了解 GitHub 世界有啥,真刀实枪的时候到了。系好裤腰带,咱们要冲出舒适区啦——

CHANGELOG

  • 180425 闪闪根据内测反馈修订
  • 180424 闪闪更新图片
  • 180420 闪闪增补相关链接和图片
  • 180418 闪闪创建
Clone this wiki locally