咱们平时的工做中,github
是必不可少的代码托管平台,可是大多数同窗也只是把它作为了托管代码的地方,并无合理的去运用。html
其实github
里面有很是多好玩或者有趣的地方的。固然,这些技巧也能对你的工做效率有很大的提高。前端
我整理了一些本身平时用的比较多的一些功能/技巧,也但愿能给你的工做带来一些帮助!node
可能不少人并无听过Gist
。它在github
首页的子目录下:react
这是github
提供的一个很是有用的功能。Gist
做为一个粘贴数据的工具,就像 Pastie
网站同样,能够很容易地将数据粘贴在Gist
网站中,并在其余网页中引用Gist
中粘贴的数据。git
做为GitHub
的一个子网站,很天然地,Gist
使用Git
版本库对粘贴数据进行维护,这是很是方便的。github
进入Gist
网站的首页,就会看到一个大大的数据粘贴对话框. 只要提供一行简单的描述、文件名,并粘贴文件内容,便可建立一个新的粘贴。web
每个新的粘贴称为一个Gist
,并拥有一个单独的URL
。算法
当一个粘贴建立完毕后,会显示新创建的Gist
页面, 点击其中的embed
(嵌入)按钮,就会显示一段用于嵌入其余网页的JavaScript
代码,将上面的JavaScript
代码嵌入到网页中,便可在相应的网页中嵌入来自Gist
的数据,并保持语法高亮等功能。docker
在有些时候,咱们可能不太想用本地建立文件,而后经过git
推送到远程这种方式去建立文件,那么有没有简单高效的一种作法呢?npm
很简单,经过github
提供的 web 界面建立方式(create new file
)去建立就能够了:
有时,咱们想在一个庞大的 git 仓库中去查找某一个文件,若是一个一个的去看,可能须要一段时间(我以前时常感受在github
仓库中去查找一个文件真的好麻烦)。
其实 github 提供了一个快捷的查找方式:按键盘'T'键激活文件查找器,按 ⬆️ 和 ⬇️ 上下选择文件,固然也能够输入你要查找的文件名,快速查找。
当咱们将本地代码提交到 GitHub
后,就能够在 GitHub
网站上查看到各类的交互信息了,例如其它开发者提的 Issue
,或者提交的代码合并请求等。可是,若是咱们能在命令行上直接查看、处理这些信息,那么这必定很是酷。
下面让我带你从 0 到 1 上手GitHub CLI
吧!
要安装 GitHub CLI
很是简单。
在macOS
下面可使用Homebrew
工具进行安装:
$ brew install github/gh/gh # 若是须要更新执行下面的命令便可 $ brew update && brew upgrade gh
在Windows
下可使用以下命令行进行安装:
scoop bucket add github-gh https://github.com/cli/scoop-gh.git scoop install gh
安装完成后直接在命令行中执行gh
命令,看到以下图所示的信息就说明已经安装成功了:
其余平台的安装参考官方文档便可: https://cli.github.com/manual/installation
使用的时候须要咱们进行一次受权:
在命令行中输入回车键就会在浏览器中打开受权页面,点击受权便可:
受权成功回到命令行,咱们发现经过gh issue list
指令已经拿到了issue
列表:
我这边列举几个经常使用的操做。
咱们经过 CLI 先交互式地提交了一条issue
,issue
的 Body
须要经过nano
编辑。
issue
列表每每存在有太多的条目,经过指定条件筛选issue
是一个很常见的需求:
如上图所示,它将筛选出label
是动态规划
的全部issue
找到一个你关注的issue
事后,要想查看该issue
的具体信息,可使用以下命令在浏览器中快速将issue
的详细信息页面打开:
接下来能够选择打开网页,预览并提交。固然,咱们也能够选择直接在命令行进行提交。
这里我只是简单介绍了issue
相关的几个经常使用命令,更多的使用方式能够查看官方文档了解更多:https://cli.github.com/manual/examples
。
GitHub Actions
是 GitHub
的持续集成服务。
一般持续集成
是由不少操做组成的,好比抓取代码、执行脚本、登陆远程服务器、发布到第三方服务等。GitHub
将这些操做称做actions
。
若是你须要某个 action
,没必要本身写复杂的脚本,直接引用他人写好的 action
便可,整个持续集成过程,就变成了一个 actions
的组合。
GitHub
作了一个官方市场,能够搜索到他人提交的 actions
:
下面分别从基本概念和发布流程详细说明一下GitHub Actions
。
workflow
(流程):持续集成一次运行的过程,就是一个 workflow。job
(任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,能够完成多个任务。step
(步骤):每一个 job 由多个 step 构成,一步步完成。action
(动做):每一个 step 能够依次执行一个或多个命令(action)。这里经过 GitHub Actions
构建一个 React
项目,并发布到 GitHub Pages
。最终代码都在这个仓库里面,发布后的网址为https://jack-cool.github.io/github-actions-demo/
。
因为示例须要将构建成果发到GitHub
仓库,所以须要 GitHub
密钥。按照官方文档,生成一个密钥。而后,将这个密钥储存到当前仓库的Settings/Secrets
里面。
我这里环境变量的名字用的是ACCESS_TOKEN
。
使用create-react-app
初始化一个 React 应用:
$ npx create-react-app github-actions-demo $ cd github-actions-demo
在项目的package.json
中,添加一个homepage
字段(表示该应用发布后的根目录)
"homepage": "https://jack-cool.github.io/github-actions-demo"
在项目的.github/workflows
目录,建立一个workflow
文件,这里用的是ci.yml
。
上面已经提到GitHub
有一个官方的市场,这里咱们直接采用的是JamesIves/github-pages-deploy-action
:
name: GitHub Actions Build and Deploy Demo on: push: branches: - master jobs: build-and-deploy: runs-on: ubuntu-latest steps: # 拉取代码 - name: Checkout uses: actions/checkout@v2 # If you're using actions/checkout@v2 you must set persist-credentials to false in most cases for the deployment to work correctly. with: persist-credentials: false # 安装依赖、打包 - name: Install and Build run: | npm install npm run-script build # 部署到 GitHub Pages - name: Deploy uses: JamesIves/github-pages-deploy-action@releases/v3 with: ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} BRANCH: gh-pages FOLDER: build
这里梳理下配置文件都作了些什么:
一、 拉取代码。这里用的是 GitHub 官方的 action: actions/checkout@v2
二、安装依赖、打包
三、部署到GitHub Pages
。使用了第三方做者的 action:JamesIves/github-pages-deploy-action@releases/v3
。我这里详细介绍下这个 action
:
使用 with
参数向环境中传入了三个环境变量:
ACCESS_TOKEN
:读取 GitHub
仓库 secrets
的 ACCESS_TOKEN
变量,也就是咱们前面设置的BRANCH
:部署分支 gh-pages
(GitHub Pages
读取的分支)FOLDER
:须要部署的文件在仓库中的路径,也就是咱们使用 npm run build
生成的打包目录这里有一点须要注意:我使用的是v3
版本,须要使用with
参数传入环境变量,且须要自行构建;网上常见的教程使用的是v2
版本,使用env
参数传入环境变量,不须要自行构建,可以使用BUILD_SCRIPT
环境变量传入构建脚本。
到这里,配置工做就完成了。
之后,你每次有代码 push
到 master
分支时,GitHub
都会开始自动构建。
平时咱们可能有一行很是好的代码,想分享给其余同事看,那么能够在url
后面加上#L 行号
,好比:https://github.com/Cosen95/rest_node_api/blob/master/app/models/users.js#L17
,效果以下图:
若是是想分享某几行的,能够在url
后面添加如#L 开始行号-L 结束行号
,像https://github.com/Jack-cool/rest_node_api/blob/master/app/models/users.js#L17-L31
,效果以下图:
msg
自动关闭 issue 🏉咱们先来看一下关闭issues
的关键字:
若是是在同一个仓库中去关闭issue
的话,可使用上面列表中的关键字并在其后加上issue
编号的引用。
例如一个提交信息中含有fixes #26
,那么一旦此次提交被合并到默认分支,仓库中的 26 号issue
就会自动关闭。
若是此次提交不是在默认分支,那么这个issue
将不会关闭,可是在它下面会有一个提示信息。这个提示信息会提示你某人添加了一个提交提到了这个issue
,若是你将它合并到默认分支就会关闭该issue
。
若是想关闭另外一个仓库中的issue
,可使用username/repository/#issue_number
这样的语法。
例如,提交信息中包含closes Jack-cool/fe_interview/issues/113
,将会关闭fe_interview
中的113
号issue
。
关闭其余仓库issue
的前提是你将代码push
到了对应的仓库
在本身的项目下,点击 Insights
,而后再点击 Traffic
,里面有 Referring sites
和 Popular content
的详细数据和排名。
其中 Referring sites
表示你们都是从什么网站来到你的项目的,Popular content
则表示你们常常看你项目的哪些文件。
有时候咱们须要标记一些任务清单去记录咱们接下来要作的事情。
issues
和 pull requests
里能够添加复选框,语法以下(注意空白符):
- [ ] 步骤一 - [ ] 步骤二 - [ ] 步骤2.2 - [ ] 步骤2.3 - [ ] 步骤三
效果以下:
普通的markdown
文件中可建立只读
的任务列表,好比在README.md
中添加 TODO list
:
### 接下来要作的事 🦀 - [x] 数据结构与算法 - [ ] react源码 - [ ] docker
效果以下:
你能够单击任务左边的复选框并拖放至新位置,对单一评论中的任务列表从新排序。
issues
模版和 pull request
模版 🍪这里以issue
模版举例,pr
模板相似
这个issue
模版我是在给element ui
提issue
时发现的:
在GitHub
中,代码库维护者若是提供有定制的 issues
模版和pull request
模版,可让人们有针对性的提供某类问题的准确信息,从而在后续维护中可以进行有效地对话和改进,而不是杂乱无章的留言。
issues
模版.github
目录.github
目录下添加 ISSUE_TEMPLATE.md
文件做为 issues
默认模版。当建立 issue
时,系统会自动引用该模版。如我在项目根目录下新建了.github/ISSUE_TEMPLATE.md
:
## 概述 bug 概述 ## 重现步骤 1. aaa 2. bbb 3. ccc ## Bug 行为 Bug 的表现行为 ## 指望行为 软件的正确行为 ## 附件 附上图片或日志,日志请用格式: > ``` > 日志内容 > ```
在该仓库新建issue
时就会出现上面预设的issue
模版:
你们平时的项目,通常都使用 Markdown
来编写项目文档和 README.md
等。Markdown
通常状况下可以知足咱们的文档编写需求,若是使用得当的话,效果也很是棒。不过当项目文档比较长的时候,阅读体验可能就不是那么理想了,这种状况我想你们应该都曾经遇到过。
GitHub
每个项目都有一个单独完整的 Wiki
页面,咱们能够用它来实现项目信息管理,为项目提供更加完善的文档。咱们能够把 Wiki
做为项目文档的一个重要组成部分,将冗长、具体的文档整理成 Wiki
,将精简的、概述性的内容,放到项目中或是 README.md
里。
关于Wiki
的使用,这里就不展开说明了,具体能够参考官方文档
查看文件时,能够按b
查看提交记录和显示每一行的最近修改状况的热度图。它会告诉你每行代码的提交人,而且提供一个能够点击的连接去查看完整提交。
中间有一个橙色的竖条。颜色越鲜艳,更改的时间就越近。
团队中通常都会有公共的代码库,submodule
和subtrees
可让咱们在不一样项目中使用这些公共的代码,避免因拷贝产生重复代码,甚至致使相同代码出现不一样修改产生多个版本。
subtree
和 submodule
的目的都是用于 git
子仓库管理,两者的主要区别在于,subtree
属于拷贝子仓库,而 submodule
属于引用子仓库。
关于实践,官方文档写的已经很是清楚了,我这里直接放上连接:
submodule
: https://git-scm.com/book/en/v2/Git-Tools-Submodules
subtree
: https://einverne.github.io/post/2020/04/git-subtree-usage.html
GitHub
的插件有不少不少,这里就推荐一下我经常使用的三个插件。
咱们有时常常须要在github
上查找文件,但若是文件结构嵌套很深,查找起来是很是麻烦的,这时使用Octotree
能够在仓库左侧显示当前项目的目录结构,让你能够在github
上像使用Web IDE
同样方便。
这个是能够更酷炫的 3D 立体式渲染github
贡献。
这个插件支持在仓库中显示仓库大小、每一个文件的大小以及每一个文件的下载连接。
Octocat
🦊哈哈 这个就比较有意思了 我也是刚知道原来github
也有本身的吉祥物。
这里贴下网站,顺便选了几个感受很萌的,你们也能够去上面选几个做为本身的头像什么的。
一、若是感受内容对你有帮助,也欢迎你分享给更多的朋友。
二、关注公众号前端森林,按期为你推送新鲜干货好文。
三、添加微信fs1263215592,拉你进技术交流群一块儿学习 🍻