安装 hub,让你的 Git 命令行功能像 GitHub 一样全面

如果你喜欢在命令行工作,试试 hub,一个用于 GitHub 的命令行工具。
164 位读者喜欢这篇文章。
Command line prompt

Opensource.com

许多人通过为 GitHub 上的项目贡献代码来参与开源软件开发。他们中的许多人使用 GitHub 的图形用户界面 (GUI),尤其是那些刚接触命令行界面 (CLI) 的人。但是,如果你更喜欢在命令行工作呢?

我最近偶然发现了 hub,这是一个命令行工具,它通过添加 GitHub 特有的功能来扩展 Git,使其更容易熟悉 Git 命令。因此,如果你厌倦了点击式的 GUI,但又希望获得一些关于 Git 有时令人困惑的语法的帮助,那么 hub 就是为你量身打造的工具。

在进一步阅读之前,最好先复习一下 Git 术语

安装 hub

hub 的使用依赖于 Git,所以首先,确认我们已经安装了 Git

git --version

你的 Git 版本必须是 1.7.3 或更高版本。如果缺少也没关系;你可以使用 Homebrew(一个开源包管理器)或你的发行版的内置包管理器(dnf、apt 等)快速安装它。我喜欢 Homebrew,所以我们将坚持使用它。Homebrew 以前在 Linux 上被称为 Linuxbrew,但现在它使用与 macOS 版本相同的名称。它可以安装在你的主目录中,这意味着你不需要 sudo 权限就可以使用它安装应用程序。如果你喜欢其他安装方法,请参阅 Git 文档

要在 Fedora 上安装 brew,Homebrew 的命令行实用程序

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

由于我们没有使用 sudo,安装脚本会将 Homebrew 安装到 ~/.linuxbrew。要了解更多关于它的工作原理,请参阅 文档

接下来,让我们使用 brew 安装 hub

$ brew install hub

接下来,通过检查其版本来验证 hub 是否安装正确

$ hub --version
git version 2.25.0
hub version 2.14.1

输出显示了 hub 和 Git 的版本。瞧!你已经成功安装了 hub。

hub 入门

使用你将在 GitHub 上托管的新仓库来试用 hub。导航到任何你想要初始化 Git 的文件夹

$ cd Documents
$ mkdir Test; cd Test/
$ git init
Initialized empty Git repository in /Users/SudeshnaSur/Test/.git/

在其中放置任何文件。Git 只会看到已更改的文件,所以使用 echo 向其中添加一些文本

$ echo "Hello" > test.txt

检查 git status 并添加

$ git status
On branch master

No commits yet

Untracked files:
	test.txt

nothing added to commit but untracked files present
$ git add .

通过使用 git add,我们已经暂存了更改,但尚未提交它们。在提交之前,我们需要一个帐户。如果你还没有帐户,请使用 这份分步指南 创建一个 GitHub 帐户。接下来,我们需要配置本地版本的 Git 以使用该帐户的用户名和电子邮件。此信息将包含在你添加到任何仓库的每个提交消息中(因为你将其设置为全局)

git config --global user.email "email@example.com"
git config --global user.name "Your Name"

值得注意的是,你可以使用 此功能 将你的电子邮件设置为私有。无论哪种方式,都将你的电子邮件设置为你的 GitHub 电子邮件地址。

现在,我们可以创建一个将分配给我们用户名的提交。让我们检入现有的更改

$ git commit -m 'Adding a test file'
[master (root-commit) 07035c94e038] Adding a test file
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt
$ git status
On branch master
nothing to commit, working tree clean

使用 hub 的高级功能

到目前为止,一切都与使用 git 相同。接下来才是有趣的地方。

现在,如果你键入 hub create,它将在 GitHub 上创建一个新仓库,其名称与当前目录相同

$ hub create
Updating origin
https://github.com/SudeshnaSur/Test

使用 hub 甚至可以将你的仓库与远程镜像链接起来

$ git remote -v
origin	git@github.com:SudeshnaSur/Test.git (fetch)
origin	git@github.com:SudeshnaSur/Test.git (push)

使用 hub 克隆和 Fork

你也可以使用 hub 克隆和 fork,而无需点击 GitHub GUI。我喜欢 hub 自动识别我们定位的仓库,只要它具有命名空间,然后是斜杠,然后是仓库名称。因此,如果我们想克隆 hub 本身的源代码,可在 https://github.com/github/hub 获取,我们只需要写

$ hub clone github/hub
Cloning into 'hub'...
remote: Enumerating objects: 26, done.
remote: Counting objects: 100% (26/26), done.
remote: Compressing objects: 100% (22/22), done.
remote: Total 19712 (delta 7), reused 13 (delta 4), pack-reused 19686
Receiving objects: 100% (19712/19712), 6.76 MiB | 7.25 MiB/s, done.
Resolving deltas: 100% (12912/12912), done.

现在我可以对我的仓库副本进行正常更改。我将创建一个名为 topic 的分支,检出该分支,然后进行少量更改并提交它(这些都是标准的 Git 命令)

$ cd hub
$ git checkout -b topic
Switched to a new branch 'topic'
$ echo “Hey” >test2.txt
$ git add .
$ git commit -m ‘Adding test 2’
[master cbb6fde5805a] Adding test 2
 1 file changed, 1 insertion(+)
 create mode 100644 test2.txt

此克隆当前是 github/hub,我没有写入权限。但我可以轻松地 fork 仓库并将更改推送到它

$ hub fork –remote-name origin

输出报告说你的帐户正在 fork 原始仓库及其所有分支。请注意,如果你已经有一个名为 origin 的远程仓库,hub 将默认将新远程仓库命名为你的用户名(如果这个术语令人困惑,请阅读这篇关于远程仓库和 fork 的复习)。接下来,让我们将分支 topic 推送到我的 fork

$ git push origin topic

我现在可以直接从命令行通过键入以下命令打开拉取请求 (PR)

$ hub pull-request

这将打开一个文本编辑器,以便我可以添加 PR 消息,然后我可以从那里管理 PR。我甚至可以使用 hub pr list 命令从命令行管理其他 PR。

使用其他 hub 功能

故事并没有到此结束;hub 提供了许多其他功能

  • 检查我们分支的持续集成 (CI) 状态
    $ hub ci-status
  • 在你的默认 Web 浏览器中打开一个项目
    $ hub browse github/quickstart
  • 同步你所有的本地分支以匹配远程仓库的最新状态
    $ hub sync
  • 列出分配给你的名字的问题
    $ hub issue --assignee User_Name
  • 列出你所在仓库中的未解决问题
    $ hub issue --limit 20
    [lists only 20 issues]
  • 打开当前项目的问题页面
    $ hub browse --issues
  • 在审查 PR 时检出一个 PR
    $ hub pr checkout 123
  • 合并后关闭问题
    $ hub issue update 123 --state closed
  • 将问题转移到新的仓库
    $ hub issue transfer 123 ANOTHER-REPO
  • 在 GitHub 中删除仓库
    $ hub-delete github/wiki-links

hub 既实用又易于从命令行使用。如果你正在从 GUI 过渡到命令行,并希望使这种体验更直观,请试用 hub

接下来阅读什么
标签
Sudeshna is from Kolkata and currently working for the Red Hat Middleware team in Pune, India. She loves to explore different open source projects and programs. She started contributing to Open Source a couple of years back as an Hacktober Participant since then she has been an avid blogger at Dzone on Python and Data Science. She enjoys her free time stargazing and loves continental cuisine. She is an RHCSA and is working her way to RHCA.
Sudeshna 来自加尔各答,目前在印度浦那的红帽中间件团队工作。她喜欢探索不同的开源项目和程序。她几年前开始作为 Hacktober 参与者为开源做贡献,从那时起,她一直是 Dzone 上关于 Python 和数据科学的狂热博主。她喜欢在空闲时间观星,并且热爱欧式美食。

2 条评论

但它添加了许多自己的功能。虽然 Git 是一个命令行工具,

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.