文章

《精通git第二版》读书笔记·ch06 github

《精通git第二版》读书笔记·ch06 github

创建账号和配置

配置ssh访问。配置一个公钥,添加到账户中。

邮件地址。github使用邮件地址区分git提交,可以添加不同的邮件地址。

两步验证(2FA)。强烈建议设置两步验证。

贡献代码

派生(Fork)。github在用户空间创建一个项目副本,具有推送权限,从而参与别人维护的公开项目。将修改提交到项目副本,开启合并请求(pull request),贡献者和维护者可以讨论代码细节。

github的流程github设计了以合并请求为中心的特殊合作流程,基于git分支和特性分支实现,类似于集成管理者工作流程,如下

  • 从master分支创建一个新分支(特性分支)。
  • 提交修改,将新分支推送到github。
  • 创建一个合并请求。通常用于贡献者提交改动到公开项目中,也可以用于开发阶段的内部项目。
  • 讨论,修改。
  • 维护者合并或者关闭合并请求。

github会做出非快进式(non-fast-forward)合并,即便合并可以进行快进式(fast-forward),会创建一个合并提交

  • 可以拉取分支,在本地合并到master,然后推送到github,合并请求将自动关闭。
  • 如果具有仓库的推送权限,可以推送特性分支到仓库中,在master分支开启合并请求进行代码审查和讨论,不需要fork。

关于合并请求的注意点

  • 大多数github项目将合并请求看作对改动的交流方式,在改动开始时就进行交流,而不是在代码完成时。这与使用邮件的补丁提交严重不同
  • 如果合并请求无法干净合并(例如“过时”),github会自动提示,需要贡献者修复。多数人使用合并目标分支的方式,可以将版本库添加为一个新的远程仓库,拉取后合并。不建议使用变基。如果使用变基,建议将变基后的分支推送到一个新的分支,并开启一个新的合并请求。

参考序号。所有合并请求、议题(Issue)都有一个唯一的编号,可以用#<xxx>引用。用<user>#<编号>引用其他人fork中的议题或者合并,用<user>/<仓库>#<编号>引用不同的版本库中的。也可以用40位完整的SHA来引用。

github风格的markdown。支持任务列表、代码摘录、引用、表情符号、图片等。

维护项目

添加合作者。在Collaborators中添加合作者,赋予提交权限。

管理合并请求,步骤如下

  • 合并通常来自fork的版本库或者同一个仓库的另一个分支。当代码符合要求时,可以在本地合并,也可以使用git pull <url> <branch>语法,或者把fork添加为远程仓库,或者使用github的merge按钮。
  • github将合并请求看作“假分支”,可以用git ls-remote <url>查看,以refs/pull/开头的引用。每个合并请求有两个引用,以/head结尾的指向合并请求分支的最新纪录。因而可以git fetch抓取后合并。
  • 另外,可以配置config,添加fetch = +refs/pull/*/head:refs/remotes/origin/pr/*,则所有合并请求在本地像分支一样,以只读形式存在。可以在本地进行测试。
  • 可以在分支或者合并请求上开启新的合并请求。

github有一些特殊文件

  • REAME。会在首页渲染出来,可以在这里放版本库或项目新人需要了解的信息,例如项目的作用、配置和安装、如何使用和运行的例子、项目许可证、向项目贡献的方式。
  • CONTRIBUTING。指出开启合并请求时想要和不想要的事情。当别人开启合并请求时,会显示该文件内容。

项目管理。可以改变默认分支、移交项目等。

管理组织

组织。代表了一组共同拥有多个项目的人,通常用于开源群组。

团队。组织中一组个人账号和版本库,及团队成员对版本库的访问权限(读、读写、管理)。一个用户可以加入任意数量的团队。

审计日志。组织拥有者可以查看整个组织的日志。可以邀请其他用户作为组织的共同拥有者。

github脚本

服务。一般是为了整合到其他商业系统中,例如持续集成服务、BUG与问题追踪系统、聊天室系统与文档系统等。

钩子。指定一个URL,github在发生期望事件时发送HTTP请求到该URL。通常设置一个web服务来监听github钩子请求。编写web钩子与监听事件参考:https://developer.github.com/webhooks/

github API。可以通过API进一步与github交互。在Appications界面生成授权令牌。参考:https://github.com/octokit

参考

《精通git第二版》

本文由作者按照 CC BY 4.0 进行授权

热门标签