Ubuntu 20.04 安装 GitHub CLI(gh),并使用

2024-09-01 00:52

本文主要是介绍Ubuntu 20.04 安装 GitHub CLI(gh),并使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0. 背景

在 Ubuntu 上,使用仅有的 Git 命令直接发布 GitHub Release 是不行的,因为 Git 自身不支持与 GitHub Release API 的交互。然而可以在 Ubuntu 上安装并使用 GitHub CLI (gh) 工具,通过命令行来发布 Release。

1. 安装

gh官网

(type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y)) \
&& sudo mkdir -p -m 755 /etc/apt/keyrings \
&& wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update \
&& sudo apt install gh -y

解释命令

1.1 (type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y))

  1. 检查系统中是否已安装wget命令。type -p wget会返回wget的路径,如果已安装的话
$ type -p wget
/usr/bin/wget
  1. 如果wget没有安装(即type -p wget的输出被重定向到/dev/null且不产生任何输出),则执行(sudo apt update && sudo apt-get install wget -y)。这会更新系统的包列表,然后安装wget。

1.2 sudo mkdir -p -m 755 /etc/apt/keyrings

创建一个目录**/etc/apt/keyrings**,用于存储APT软件包管理器的密钥。-m 755设置目录权限,使其对所有用户可读写

1.3 wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null

  1. 使用wget下载GitHub CLI的GPG密钥。-q使wget在安静模式下运行,不显示下载进度,O- 使输出直接传输到管道而不是文件。
  2. 通过管道 | 将下载的密钥传输给sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg,这会将密钥内容写入指定的文件。> /dev/null将tee命令的输出重定向到/dev/null,这样就不会在终端显示密钥内容。

1.4 sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg

改变密钥文件的权限,使其对组和其他用户可读

1.5 echo “deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main” | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null

  1. 构建一个APT源字符串,其中包含用于安装GitHub CLI的软件包存储库的URL。[arch=$(dpkg --print-architecture)]动态地插入当前系统的架构。
$ dpkg --print-architecture
amd64
  1. 将这个字符串写入/etc/apt/sources.list.d/github-cli.list文件,这样APT就可以从这个源安装软件包。> /dev/null将输出重定向到/dev/null,不显示在终端

1.6 sudo apt install gh -y

安装GitHub CLI,-y标志自动确认安装,无需手动输入。

2. gh 使用

官方使用手册

2.1 git 与 gh 区别

Git 命令行接口 (git) 允许使用本地或远程 Git 存储库。 远程存储库可以托管在 GitHub 上,也可以由另一个服务托管。

GitHub CLI (gh) 专为搭配使用 GitHub 而设计。 其允许使用命令行以各种方式与 GitHub 进行交互,如上一个列表所示。 如果倾向于使用命令行,用户可能更喜欢使用 GitHub CLI,而不是在浏览器中使用 GitHub。 GitHub CLI 还能让用户更轻松地创建脚本来自动执行 GitHub 操作。

2.2 使用

2.2.1 从终端运行这个命令向 GitHub 进行身份验证

$ gh auth login
? What account do you want to log into? GitHub.com
? What is your preferred protocol for Git operations on this host? HTTPS
? Authenticate Git with your GitHub credentials? Yes
? How would you like to authenticate GitHub CLI? Login with a web browser! First copy your one-time code: 1FBF-CCA9
Press Enter to open github.com in your browser... 
Opening in existing browser session.
✓ Authentication complete.
- gh config set -h github.com git_protocol https
✓ Configured git protocol
✓ Logged in as 6master6
  1. 选择 GitHub.com 作为登录选项,并使用one-time code: 1FBF-CCA9 在浏览器进行验证
  2. 选择 HTTPS 作为 Git 操作的首选协议时,GitHub CLI 将自动存储 Git 凭据,并对询问是否要使用 GitHub 凭据向 Git 进行身份验证的提示回答“是”。 此操作非常有用,因为这允许直接使用 git push、git pull 等 Git 命令,无需设置单独的凭据管理器或使用 SSH。

2.2.2 创建 Release 使用以下命令创建一个新的 GitHub Release

  1. 使用 gh auth status 命令检查你的 GitHub CLI 登录状态
$ gh auth status
github.com✓ Logged in to github.com account 6master6 (keyring)- Active account: true- Git operations protocol: https- Token: gho_************************************- Token scopes: 'gist', 'read:org', 'repo', 'workflow'
  1. gh repo view --web 来查看仓库的详细信息,并确保你有足够的权限
$ gh repo view --web
Opening github.com/DjangoPeng/GitHubSentinel in your browser.

查看自己的仓库

$ gh repo view 6master6/GitHubSentinel
6master6/GitHubSentinel
GitHub Sentinel is an open-source AI Agent designed to enhance collaboration and project management for developers and project managers. It automates the retrieval and aggregation of updates from subscribed GitHub repositories on a regular basis (daily/weekly), ensuring you stay informed of the latest changes.GitHubSentinel                                                                                                     GitHub Sentinel is an open-source AI Agent designed to enhance collaboration and project management for developers  and project managers. It automates the retrieval and aggregation of updates from subscribed GitHub repositories on aregular basis (daily/weekly), ensuring you stay informed of the latest changes.                                     View this repository on GitHub: https://github.com/6master6/GitHubSentinel
  1. 创建 Release
    使用 gh release create 命令来创建一个新的 Release。如果你已经在仓库的本地克隆目录中,可以直接运行以下命令
gh release create v0.0.1 --title "v0.0.1" --notes "Initial release of GitHub Sentinel"

如果你不在仓库的本地目录中,你需要指定仓库的完整路径,格式为 /,例如:

gh release create 6master6/GitHubSentinel v0.0.1 --title "v0.0.1" --notes "### Release Notes for v0.0.1- Initial release with basic functionality- Subscription management- Update retrieval from GitHub repositories- Notification system- Report generation
"

然后

git push origin main --tags

这篇关于Ubuntu 20.04 安装 GitHub CLI(gh),并使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125480

相关文章

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

prometheus如何使用pushgateway监控网路丢包

《prometheus如何使用pushgateway监控网路丢包》:本文主要介绍prometheus如何使用pushgateway监控网路丢包问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录监控网路丢包脚本数据图表总结监控网路丢包脚本[root@gtcq-gt-monitor-prome

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

如何在Ubuntu 24.04上部署Zabbix 7.0对服务器进行监控

《如何在Ubuntu24.04上部署Zabbix7.0对服务器进行监控》在Ubuntu24.04上部署Zabbix7.0监控阿里云ECS服务器,需配置MariaDB数据库、开放10050/1005... 目录软硬件信息部署步骤步骤 1:安装并配置mariadb步骤 2:安装Zabbix 7.0 Server

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected