GitHub 开发随笔

常用术语

  • watch:会持续收到该项目的动态
  • fork:复制某个仓库到自己的 Github 仓库中
  • star:可以理解为点赞
  • clone:将项目下载至本地
  • follow:关注自己感兴趣的作者,会收到他们的动态
  • pull request (PR):在多人协作编程的项目中,用于向代码仓库提交自己的代码更改请求

免密推送代码

GitHub 免密推送代码,常见的实现方式有以下三种:

  • (1) 推荐使用 SSH Key 方式,安全且适用于个人开发者。
  • (2) 如果是 Linux 服务器自动化 Push 代码,使用 Deploy Key。
  • (3) 如果使用 HTTPS,可以使用 Git Credential Helper,即将 Token 存储在本地文件中。

使用 SSH Key

推荐使用 SSH 公钥的方式来实现免密 Push 代码,安全且适用于个人开发者。

  • (1) 执行生成 SSH 密钥的命令,然后一路回车,默认生成 ~/.ssh/id_rsa(私钥)和 ~/.ssh/id_rsa.pub(公钥)
1
ssh-keygen -t ed25519 -C "your_email@example.com"
  • (2) 查看 SSH 公钥的内容
1
cat ~/.ssh/id_rsa.pub
  • (3) 复制 SSH 公钥内容,然后在 GitHub 设置里添加:

  • (4) 测试 SSH 连接认证,如果看到以下内容,则说明 SSH 认证成功

1
ssh -T git@github.com
1
Hi your_username! You've successfully authenticated...
  • (5) 更改 Git 远程仓库 URL,如果 GitHub 仓库是 HTTPS 方式,需要修改为 SSH 方式
1
git remote set-url origin git@github.com:your_username/your_repo.git
  • (6) 免密 Push 代码,以后在本地执行 git push 时,就不会再要求输入密码或 Token 了
1
git push origin main

使用 Deploy Key

如果代码是在 Linux 服务器上自动化 Push 的,那么可以使用 Deploy Key 来实现免密 Push 代码,适用于使用自动化脚本的场景。

  • (1) 执行生成 SSH 密钥的命令,然后一路回车,默认生成 ~/.ssh/github_deploy_key(私钥)和 ~/.ssh/github_deploy_key.pub(公钥)
1
ssh-keygen -t ed25519 -f ~/.ssh/github_deploy_key
  • (2) 查看 SSH 公钥的内容
1
cat ~/.ssh/github_deploy_key.pub
  • (3) 复制 SSH 公钥内容,然后添加到 GitHub 仓库的 Deploy Keys

    • 进入项目所在的 GitHub 仓库
    • 菜单栏导航到 Settings -> Deploy Keys
    • 点击 Add deploy key 按钮
    • 粘贴 github_deploy_key.pub 公钥的内容
    • 勾选 Allow write access(允许写入)
    • 确认添加
  • (4) 配置 SSH 客户端,在 ~/.ssh/config 文件里添加以下内容

1
2
3
4
Host github-deploy
HostName github.com
User git
IdentityFile ~/.ssh/github_deploy_key
  • (5) 测试 SSH 连接认证,如果看到以下内容,则说明 SSH 认证成功
1
ssh -T github-deploy
1
Hi your_username! You've successfully authenticated, but GitHub does not provide shell access.
  • (6) 更改 Git 远程仓库 URL,如果 GitHub 仓库是 HTTPS 方式,需要修改为 SSH 方式
1
git remote set-url origin git@github.com:your_username/your_repo.git
  • (7) 免密 Push 代码,以后在 Linux 服务器上执行自动化 Push 时,就不会再要求输入密码或 Token 了
1
git push origin main

使用 Git Credential Helper

如果不想使用 SSH,而是使用 HTTPS,那么可以让 Git 记住 Token,以此实现免密 Push 代码。

  • (1) 更改 Git 远程仓库 URL,如果 GitHub 仓库是 SSH 方式,需要修改为 HTTPS 方式
1
git remote set-url origin https://github.com/your_username/your_repo.git
  • (2) 让 Git 将凭据存储在本地的纯文本文件中,这样下次 Git 访问同一个远程仓库时,会自动使用该凭据进行身份验证
1
2
3
4
5
# 局部设置
git config credential.helper store

# 或者全局设置
git config --global credential.helper store
  • (3) 免密 Push 代码,首次 Push 会要求输入 Token,并且 Git 会自动将 Token 存储在本地文件中,后续 Push 不再需要输入 Token
1
git push origin main

提示

  • 当 GitHub 仓库使用 HTTP 方式时,如果不想每次在 Push 代码时输入 Token,还可以直接在仓库的远程 URL 中嵌入 Token,如下所示:
  • git remote set-url origin https://<TOKEN>@github.com/your_username/your_repo.git,需要替换 <TOKEN> 为你自己的 GitHub Token。

Emoji 表情包

Emoji 使用说明

不经意发现在大神的 GitHub 项目上,Git 的提交信息竟然有 Emoji 前缀,相当鹤立鸡群、别具一格,感觉挺有趣的。个人认为这样做有三点好处,后两点尤为重要:

  • Emoji 比较呆萌,能美化提交记录和 GitHub 页面;
  • Emoji 作为标签,能很好的对提交记录分门别类,方便整理;
  • Emoji 蕴含的丰富语义和情绪,能提高提交信息的可读性、可理解性,增强提交历史的阅读体验;

Emoji 的用法很简单,在 git commit 时如下书写提交信息,用 :smile: 即可插入一个笑脸 Emoji:

1
git commit -am ':smile: 重构代码'

Emoji 除了可以在 Git 提交时使用,还可以在 README.md 、GitHub Issues 和 GitHub Wiki 中直接使用 Emoji。这里整理出常用的 Emoji 列表:

Emoji 资源推荐

仓库搜索范围

提示

在下面介绍的 GitHub 高级搜索语法中,关键字都可以有多个,只需要使用空格符分隔即可。

in 关键字搜索

  • 搜索格式

    • 关键字 in:name | description | readme
  • 搜索案例

    • xxx in:name:搜索项目名称含有 xxx 的
    • xxx in:description:搜索项目描述含有 xxx 的
    • xxx in:readme:搜索项目的 README 文件中包含 xxx 的
  • 组合搜索案例

    • xxx in:name,readme:搜索项目的名称和 README 文件中都包含 xxx 的

限定编程言搜索

  • 搜索格式

    • 关键字 language:编程语言
  • 搜索案例

    • game language:C++:搜索 C++ 开发的游戏项目
    • multiplayer server language:C++:搜索 C++ 开发的多人游戏服务器项目

awesome 加强搜索

  • 搜索格式

    • awesome 关键字
  • 搜索案例

    • awesome books:搜索优秀的 PDF 电子书项目
    • awesome c++:搜索优秀的 C++ 相关的项目,包括框架、学习教程、PDF 电子书等

提示

  • awesome 加强搜索一般用来搜索学习工具、学习教程、PDF 书籍类相关的项目

stars 或 fork 数量关键字搜索

starts 数量关键字搜索

  • 搜索格式

    • 格式一:关键字 stars:>或者:>=数字
    • 格式二:关键字 stars:数字1..数字2
  • 搜索案例

    • redis stars:>=5000:搜索 stars 数大于等于 5000 的 Redis 项目
    • redis stars:3000..5000:搜索 stars 数在 3000 ~ 5000 之间的 Redis 项目

fork 数量关键字搜索

  • 搜索格式

    • 格式一:关键字 fork:>或者:>=数字
    • 格式二:关键字 fork:数字1..数字2
  • 搜索案例

    • redis fork:>=5000:搜索 fork 数大于等于 5000 的 Redis 项目
    • redis fork:3000..5000:搜索 fork 数在 3000 ~ 5000 之间的 Redis 项目

stars 与 fork 数量关键字组合搜索

  • 组合搜索案例
    • redis stars:>1000 forks:500..1000:搜索 stars 数大于 1000,且 fork 数在 500 ~ 1000 之间的 Redis 项目

高亮显示某行代码

  • 高亮显示某个源文件的某一行代码

    • 使用格式:URL 地址后面紧跟 #L数字
    • 使用案例:https://github.com/huangzworks/redis-3.0-annotated/blob/unstable/src/cluster.c#L164
  • 高亮显示某个源文件的多行代码

    • 使用格式:URL 地址后面紧跟 #L数字-L数字
    • 使用案例:https://github.com/huangzworks/redis-3.0-annotated/blob/unstable/src/cluster.c#L164-L179

项目内快速搜索文件

在 GitHub 项目(Repo)的页面中,使用快捷键 t,可以开启项目文件的快捷搜索,如下图所示:

GitHub 快捷键使用手册

搜索某个地区内的技术大佬

  • 搜索格式

    • 格式一:location:地区
    • 格式二:language:编程语言
  • 搜索案例

    • location:beijing language:java:搜索位于北京,使用 Java 语言的技术大佬

拉取 GitHub 项目对应的 WiKi 页面

  • Git 命令的语法:
1
git clone git@github.com:<YOUR_USERNAME>/<YOUR_PROJECT_NAME>.wiki.git
  • Git 命令的使用
1
git clone git@github.com:alibaba/spring-cloud-alibaba.wiki.git