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

相关文章

Rust中的注释使用解读

《Rust中的注释使用解读》本文介绍了Rust中的行注释、块注释和文档注释的使用方法,通过示例展示了如何在实际代码中应用这些注释,以提高代码的可读性和可维护性... 目录Rust 中的注释使用指南1. 行注释示例:行注释2. 块注释示例:块注释3. 文档注释示例:文档注释4. 综合示例总结Rust 中的注释

python安装whl包并解决依赖关系的实现

《python安装whl包并解决依赖关系的实现》本文主要介绍了python安装whl包并解决依赖关系的实现,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、什么是whl文件?二、我们为什么需要使用whl文件来安装python库?三、我们应该去哪儿下

MySQL安装时initializing database失败的问题解决

《MySQL安装时initializingdatabase失败的问题解决》本文主要介绍了MySQL安装时initializingdatabase失败的问题解决,文中通过图文介绍的非常详细,对大家的学... 目录问题页面:解决方法:问题页面:解决方法:1.勾选红框中的选项:2.将下图红框中全部改为英

MySQL9.0默认路径安装下重置root密码

《MySQL9.0默认路径安装下重置root密码》本文主要介绍了MySQL9.0默认路径安装下重置root密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录问题描述环境描述解决方法正常模式下修改密码报错原因问题描述mysqlChina编程采用默认安装路径,

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

springboot的调度服务与异步服务使用详解

《springboot的调度服务与异步服务使用详解》本文主要介绍了Java的ScheduledExecutorService接口和SpringBoot中如何使用调度线程池,包括核心参数、创建方式、自定... 目录1.调度服务1.1.JDK之ScheduledExecutorService1.2.spring

Java使用Tesseract-OCR实战教程

《Java使用Tesseract-OCR实战教程》本文介绍了如何在Java中使用Tesseract-OCR进行文本提取,包括Tesseract-OCR的安装、中文训练库的配置、依赖库的引入以及具体的代... 目录Java使用Tesseract-OCRTesseract-OCR安装配置中文训练库引入依赖代码实

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台