【Github CLI】Take GitHub to the command line

news2024/11/18 3:01:59

目录儿~

  • 一、Git、Github、GitLab
  • 二、Github CLI——gh
    • 2.1 gh简介
    • 2.2 gh的使用
      • 2.21 Github身份验证(必选)
      • 2.22 常用命令
        • (1)在Github仓库中打开当前项目
        • (2)gh配置 gh config
        • (3)克隆仓库 gh repo clone
        • (4)issue
        • (5)pull
        • (6)add、commit和push
    • 2.3 总结
  • 三、 Github访问优化

最近在Github上看到这个 Github CLI,从这个界面看貌似这个也能克隆仓库,而且下面小字说用这个官方的命令行界面速度更快。

虽然我一直都很快(指访问Github),但还是点进取来学习一下。
在这里插入图片描述

以前的提交、推送、克隆这些工作都是在相应的IED(比如在pycharm里面使用Git)里面进行的,有时也在git bash(或者powershell命令行)里面进行。

安装了Git之后,一般都可以在命令行使用git 开头的各种命令,如:

(base) PS C:\Users\dahu> git
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           [--super-prefix=<path>] [--config-env=<name>=<envvar>]
           <command> [<args>]

These are common Git commands used in various situations:

start a working area (see also: git help tutorial)
   clone     Clone a repository into a new directory
   init      Create an empty Git repository or reinitialize an existing one

work on the current change (see also: git help everyday)
   add       Add file contents to the index
   mv        Move or rename a file, a directory, or a symlink
   restore   Restore working tree files
   rm        Remove files from the working tree and from the index

examine the history and state (see also: git help revisions)
   bisect    Use binary search to find the commit that introduced a bug
   diff      Show changes between commits, commit and working tree, etc
   grep      Print lines matching a pattern
   log       Show commit logs
   show      Show various types of objects
   status    Show the working tree status

grow, mark and tweak your common history
   branch    List, create, or delete branches
   commit    Record changes to the repository
   merge     Join two or more development histories together
   rebase    Reapply commits on top of another base tip
   reset     Reset current HEAD to the specified state
   switch    Switch branches
   tag       Create, list, delete or verify a tag object signed with GPG

collaborate (see also: git help workflows)
   fetch     Download objects and refs from another repository
   pull      Fetch from and integrate with another repository or a local branch
   push      Update remote refs along with associated objects

'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.
See 'git help git' for an overview of the system.

一、Git、Github、GitLab

这里简单介绍一下这些概念,相比大家都比我熟悉了。

Git:
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。这是官方解释,结合自己经验来说,一般在不大不小的公司里,开发的大佬提交代码就是用这个工具的。

Github:
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub。

GitLab:
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。安装方法是参考GitLab在GitHub上的Wiki页面。一般来说中等规模的公司里面会用,毕竟相比于公有仓库这个可以私有化且免费。

Git是一种版本控制系统,就是一种工具软件,用于代码的存储和版本控制。

GitHub是一个基于Git实现的在线代码仓库,是目前全球最大的代码托管平台,可以帮助程序员之间互相交流和学习,当然不公开的仓库有收费服务。

GitLab也是一个基于Git实现的在线代码仓库,你可以用GitLab自己搭建一个类似于GitHub一样的仓库,但!GitLab有完整的管理界面和权限控制,中规模企业会搭建Git私服。

GitHub和GiLlab都是基于Web的Git远程仓库,都提供了分享开源项目的平台,为开发者和团队提供了存储、分享、发布和合作开发项目的中心化云存储的场所。从代码的私有性上来看,GitLab 是一个更好的选择。但是对于开源项目而言,GitHub 依然是代码托管的首选。

二、Github CLI——gh

2.1 gh简介

CLI:一般指命令行界面。 命令行界面(command-line interface)。

所以Github CLI即Github的命令行界面,CLI并不是该工具的名称,这款命令行工具的名字叫:gh

项目地址:https://github.com/cli/cli

官方介绍:

gh is GitHub on the command line. It brings pull requests, issues, and other GitHub concepts to the terminal next to where you are already working with git and your code.

安装:
直接到上面的仓库下载你的系统对应的release版本就可以了。还支持winget、conda等方式安装。

也可以在这里一键下载windows版本:https://cli.github.com/

2.2 gh的使用

官方命令文档:https://cli.github.com/manual/gh

在进行下面的设置之前现在命令行或者powershell(都行)输入gh看看有没有输出,确保成功安装gh

2.21 Github身份验证(必选)

或者说使用gh登录到你的Github账户。

命令行输入:

 gh auth login

接下来会有许多选项供你选择,一般是通过键盘的上下键来选择,并用enter确认

可以参考我的选择:

(base) PS C:\Users\dahu> gh auth login
? What account do you want to log into? GitHub.com
? What is your preferred protocol for Git operations? SSH
? Upload your SSH public key to your GitHub account? C:\Users\dahu\.ssh\id_rsa.pub
? Title for your SSH key: (GitHub CLI)

? Title for your SSH key: GitHub CLI
? How would you like to authenticate GitHub CLI? Login with a web browser

! First copy your one-time code: 7080-B9B3
Press Enter to open github.com in your browser... 7080-B9B3
✓ Authentication complete.
- gh config set -h github.com git_protocol ssh
✓ Configured git protocol
HTTP 422: Validation Failed (https://api.github.com/user/keys)
key is already in use

(最后一行的错误不用管)

这里我用的是ssh-key,之前使用Git的时候就已经配置了的,gh会自动找到公钥。
如果出现了问题,可以看我之前的文章:Git配置

完成后输入gh auth status即可看到登录状态:

(base) PS C:\Users\dahu> gh auth status
github.com
  ✓ Logged in to github.com as CQUPTLei (oauth_token)
  ✓ Git operations for github.com configured to use ssh protocol.
  ✓ Token: *******************

2.22 常用命令

(1)在Github仓库中打开当前项目

进入本地仓库目录下,使用gh browse命令

(base) PS D:\chatGPT_based> gh browse
Opening github.com/CQUPTLei/chatGPT_based in your browser.

可选参数:

-b, --branch
打开传入的分支名
-c, --commit
打开上一次提交
-n, --no-browser
不打开浏览器,打印目标URL
-p, --projects
打开项目仓库的Project页面
-R, --repo <[HOST/]OWNER/REPO>
使用[HOST/]OWNER/REPO格式选择另一个存储库
-s, --settings
打开项目设置
-w, --wiki
打开项目仓库的wiki页面

(2)gh配置 gh config

查看全部gh配置:gh config list
查看指定项的配置:gh config get
对某项进行设置:gh config set,如gh config set editor vim,将编辑器设置为vim

当前支持的配置项:

git_protocol: 克隆、推送使用的协议 (default: "https")
editor: 文本编辑器
prompt: toggle interactive prompting in the terminal (default: "enabled")
pager: 在终端中切换交互式提示,默认开启
http_unix_socket: the path to a Unix socket through which to make an HTTP connection
browser: 用于打开URL的web浏览器

如:

(base) PS C:\Users\dahu> gh config list
git_protocol=ssh
editor=
prompt=enabled
pager=
http_unix_socket=
browser=

(3)克隆仓库 gh repo clone

此方式比较简便只要用户名和仓库名(OWNER/REPO)就可以了,如:gh repo clone cli/cli
(使用仓库url也同样支持)

将cli克隆到D盘:

(base) PS D:\chatGPT_based> cd ..
(base) PS D:\> gh repo clone cli/cli
Cloning into 'cli'...
remote: Enumerating objects: 43767, done.
remote: Counting objects: 100% (415/415), done.
remote: Compressing objects: 100% (246/246), done.
remote: Total 43767 (delta 224), reused 317 (delta 168), pack-reused 43352 eceiving objects: 100% (43767/43767), 26.41 MiB | 6.34 MiB/s
Receiving objects: 100% (43767/43767), 26.62 MiB | 6.36 MiB/s, done.
Resolving deltas: 100% (29558/29558), done.

总30几M,时间2秒左右。不过我不能确定是不是gh的功劳,因为我本来就快😁😁😁。大家可以试试。

我删除又使用git克隆了一下: git clone git@github.com:cli/cli.git
用时5s左右,感觉差不多。

又用两者克隆了一个700M的仓库,感觉差不多,可能是我网络好(开了proxy)。

目前,在我这里,gh repo clonegit clone的区别主要是命令的精简性好。

(4)issue

命令有:

  1. gh issue create
  2. gh issue list
  3. gh issue status
  4. gh issue close 等等
    如:
(base) PS D:\chatGPT_based> gh issue create --title "I found a bug" --body "Nothing works"

Creating issue in CQUPTLei/chatGPT_based

https://github.com/CQUPTLei/chatGPT_based/issues/1

在这里插入图片描述

更多示例:

$ gh issue create --title "I found a bug" --body "Nothing works"
$ gh issue create --label "bug,help wanted"
$ gh issue create --label bug --label "help wanted"
$ gh issue create --assignee monalisa,hubot
$ gh issue create --assignee "@me"
$ gh issue create --project "Roadmap"

(5)pull

Create a pull request :gh pr create

$ gh pr create --title "The bug is fixed" --body "Everything works again"
$ gh pr create --reviewer monalisa,hubot  --reviewer myorg/team-name
$ gh pr create --project "Roadmap"
$ gh pr create --base develop --head monalisa:feature

List pull requests in a GitHub repository:gh pr list

List PRs authored by you
$ gh pr list --author "@me"

List only PRs with all of the given labels
$ gh pr list --label bug --label "priority 1"

Filter PRs using search syntax
$ gh pr list --search "status:success review:required"

Find a PR that introduced a given commit
$ gh pr list --search "<SHA>" --state merged

(6)add、commit和push

好像现在只能用原来的git命令实现这些功能。

之前好像有gh repo push之类的命令。

我正在质问Github CLI官方,稍后更新。

作者刚刚回复我了:
在这里插入图片描述
意思就是说gh没有提交、推送的功能,这几项缺失的功能还是使用以前的git commit等命令来实现。

gh的优势就是

• Users, organizations, access-controlled repositories,
• Issues, Discussions,
• Pull Requests, code review,
• GitHub Actions, Codespaces,
• Gists,
• and more.

本文就当是了解了一下Github CLI吧,目前大部分工作还是会用Git,可能未来这个工具会被广泛应用吧。

2.3 总结

基础功能上感觉和Git的命令行功能差不多,这个功能更多,可能我还没用到。

克隆仓库倒还好用,

三、 Github访问优化

一般改改hosts就行了,把Github的DNS解析添加到本地就行了。

或者使用那个,你懂得。

修改hosts文件,可以用这个插件:https://github.com/aardio/Ghips

下载了打开就能用:先刷新,在更改hosts就行了,没必要打开自动刷新,发现打不开了在再用这个软件修改下就行了。
在这里插入图片描述
更改git混DNS解析后记得刷新DNS缓存:

ipconfig/flushdns

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/174265.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(16)go-micro微服务jaeger链路追踪

文章目录一 jaeger链路追踪介绍什么是链路追踪&#xff1a;链路追踪主要功能&#xff1a;二 jaeger链路追踪作用三 jaeger链路追踪主要特性四 jaeger链路追踪原理图1.链路调用原理2. 一次调用链分析3.链路追踪存储与调用五 jaeger链路追踪五个重要组件六 jaeger链路追踪安装1.d…

Junit框架

JUnit 是一个 Java 编程语言的单元测试框架。环境配置创建maven项目&#xff0c;导入Junit配置<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --> <dependency><groupId>org.junit.jupiter</groupId><artifactId&g…

Linux常用命令——tail命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) tail 在屏幕上显示指定文件的末尾若干行 补充说明 tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个&#xff0c;则在显示的每个文件前面加一个文件名…

【docker概念和实践 4】 常见命令和案例(1)

一、说明 本篇讲述当Docker安装完成后&#xff0c;进行的由浅入深的操作过程。命令种类有&#xff1a;1 进程引擎进程命令 2帮助命令 3 镜像命令 4 容器命令 5 仓库命令。 二、关于操作引擎的指令 本节讲操作引擎的启动、关闭、维护等。以下两种形势都是等价的命令格式。 方法…

Java概览——Java运行机制

Java概览—Java运行机制Java的运行过程 Java程序运行时&#xff0c;必须经过编译和运行两个步骤。首先将后缀名为.java的源文件进行编译&#xff0c;最终生成后缀名为.class的字节码文件&#xff0c;然后Java虚拟机&#xff0c;将字节码文件进行解释执行&#xff0c;并将结果显…

Docker学习笔记【part1】概念与安装

一、Docker的概念 Docker 是实现系统平滑移植、容器虚拟化的技术&#xff0c;基于 Go语言&#xff0c;可以实现软件带环境安装&#xff0c;做到“一次镜像&#xff0c;处处运行”。Docker 是一个 C/S 模式的架构&#xff0c;后端是一个松耦合架构&#xff0c;众多模块各司其职…

九龙证券|次新股叠加智慧交通+信创+数字经济概念,开盘冲涨停!

核算机板块1月以来跑赢上证指数&#xff1b;才智交通、成绩高增及严重财物重组个股登上涨停榜。 证券时报•数据宝核算&#xff0c;1月19日&#xff0c;沪深两市收盘涨停股35只&#xff0c;其中ST股6只。群众交通、长久科技两股一字板强势涨停&#xff0c;潞安环能、跃岭股份收…

【MySQL】第五部分 多表查询

【MySQL】第五部分 多表查询 文章目录【MySQL】第五部分 多表查询5. 多表查询5.1 等值连接5.2 非等值连接5.3 自连接5.4 内连接5.5 外连接5.6 满外连接5.7 SQL99语法实现多表查询5.7.1 JOIN...ON语法5.7.2 使用SQL99语法实现内连接5.7.3 使用SQL99语法实现左外连接和右外连接5.…

postman入门

目录 新建界面 菜单区 百度翻译api实战 post 参数化 新建界面 1&#xff09;可以新建请求&#xff0c;&#xff08;rqueset&#xff09;模拟客户端的请求&#xff0c; 2&#xff09;可以创建测试集合&#xff08;collection&#xff09;&#xff0c;对接口请求进行统一管理…

删除排序链表中的重复元素

删除排序链表中的重复元素 题目描述 原始题目参考&#xff1a;删除有序链表的重复元素 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1…

java spring IOC Bean管理操作(xml P名称空间注入)

首先 我们来写一个基本的 通过xml的set属性注入 首先创建一个项目 然后引入 spring 最基本的几个依赖包 src下 下有一个 gettingStarted 包 下面有一个 user类 代码如下 package gettingStarted;public class user {public String name;public int age;public void setName(S…

leetcode 1817. 查找用户活跃分钟数【python3,哈希表的实现思路详解】

题目 给你用户在 LeetCode 的操作日志&#xff0c;和一个整数k。日志用一个二维整数数组logs表示&#xff0c;其中每个logs[i] [IDi, timei]表示ID为IDi的用户在timei分钟时执行了某个操作。 多个用户可以同时执行操作&#xff0c;单个用户可以在同一分钟内执行多个操作。指定…

Deno不只是个Javascript运行时

Deno 是一个安全的 JavaScript 和 TypeScript 运行时&#xff0c;作者是 Ryan Dahl&#xff08;也是 Node.js 的原作者&#xff09;。Deno 的诞生之初是为了解决 2009 年首次设计 Node.js 时的一些疏忽。我认为这种改造动机很有道理&#xff0c;因为我相信每个程序员都希望有机…

cmake跨平台构建工具

TOP目录 前言 CMake是一个跨平台的安装编译工具&#xff0c;可以用简单的语句来描述所有平台的安装(编译过程)。CMake可以说已经成为大部分C开源项目标配 因此&#xff0c;作为一名C C发开人员&#xff0c;看到cmake不应该一脸茫然… 作为初学者&#xff0c;通俗的认为cmake…

C语言入门(七)——结构体

复合类型与结构体 数据抽象 数据类型标志 嵌套结构体 复合类型与结构体 在编程语言中&#xff0c;最基本的&#xff0c;不可再分的数据类型称为基本类型&#xff0c;例如整型&#xff0c;浮点型;根据语法规则由基本类型组合而成的类型称为复合类型&#xff0c;例如字符串是…

系统性能优化、性能指标、性能测试

系统性能是互联网应用最核心的非功能性架构目标&#xff0c;系统因为高并发访问引起的首要问题就是性能问题&#xff1a;高并发访问的情况下&#xff0c;系统因为资源不足&#xff0c;处理每个请求的时间就会变慢&#xff0c;看起来就是性能变差。 因此&#xff0c;性能优化是…

1596_AURIX_TC275_LMU简介

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这个章节其实没有多少页文档&#xff0c;而大部分的文档其实是寄存器的字段描述。因此&#xff0c;这次一次性把这个文档的内容大概看完。 LMU提供了32K的本地通用RAM。ED存储的访问也是通…

Mybatis 框架开发的准备

从百度中“mybatis download”可以下载最新的 Mybatis 开发包。进入选择语言的界面&#xff0c;进入中文版本的开发文档。下载相关的 jar 包或 maven 开发的坐标。下载的 zip 文件如下&#xff08;我们的资料文件夹&#xff09;&#xff1a;我们所使用的 Mybatis 版本是 3.2.7 …

我在CSDN的2022:突破零粉丝,4个月涨粉4000+,2023年目标5万+

文章目录前言我为什么又回来写博客&#xff1f;初写文章碰壁1024活动第一次上热榜关于上热榜博客之星2023年目标最后前言 今年最自豪的事&#xff0c;我用业余时间&#xff0c;在CSDN上坚持创作了4个月&#xff0c;产出了20多篇博客&#xff0c;其中7篇文章上了全站热榜&#…

Python基础必经之路——函数

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 目录前言定义函数向函数传递信息实参和形参传递实参返回值将函数存储在模块中导入整个模块尾语 &#x1f49d;定义函数 下面是一个打印问候语的简单函数 def greet_user():print("hello") greet_user()本例示例…