使用 GitHub 方便 Git 操作
概要
hub
[--noop] COMMAND [OPTIONS]
hub alias
[-s] [SHELL]
hub help
hub-COMMAND
说明
Hub 是一个围绕 Git 的工具,旨在通过附加功能来增强 Git,从而改善其与 GitHub 的协作能力。
命令
可用命令分为两组:一组是已经存在于 Git 中但通过 hub 进行扩展的命令,另一组是 hub 提供的自定义命令。
已扩展的 git 命令
- hub-am(1)
- 从 GitHub 拉取请求中在本地复制提交。
- hub-apply(1)
- 从 GitHub 下载补丁并在本地应用。
- hub-checkout(1)
- 检出拉取请求的头部作为本地分支。
- hub-cherry-pick(1)
- 从 GitHub 上的分支中挑选提交。
- hub-clone(1)
- 从 GitHub 克隆储存库。
- hub-fetch(1)
- 在执行 git fetch 之前添加缺失的远程。
- hub-init(1)
- 初始化 git 储存库并添加一个指向 GitHub 的远程。
- hub-merge(1)
- 使用类似于 GitHub 合并按钮的信息,在本地合并拉取请求。
- hub-push(1)
- 将 git 分支推送到每个列出的远程。
- hub-remote(1)
- 为 GitHub 储存库添加 git 远程。
- hub-submodule(1)
- 为 GitHub 储存库添加 git 子模块。
hub 提供的新命令
- hub-alias(1)
- 显示用于包装 git 的 Shell 说明。
- hub-api(1)
- 低级的 GitHub API 请求界面。
- hub-browse(1)
- 在 Web 浏览器中打开 GitHub 储存库。
- hub-ci-status(1)
- 显示提交的 GitHub 检查状态。
- hub-compare(1)
- 在 Web 浏览器中打开 GitHub 对比页面。
- hub-create(1)
- 在 GitHub 上创建新储存库并为此添加一个 git 远程。
- hub-delete(1)
- 在 GitHub 上删除储存库。
- hub-fork(1)
- 在 GitHub 上创建当前储存库的分支并为此添加一个 git 远程。
- hub-gist(1)
- 创建并打印 GitHub Gist。
- hub-pull-request(1)
- 创建 GitHub 拉取请求。
- hub-pr(1)
- 管理当前储存库的 GitHub 拉取请求。
- hub-issue(1)
- 管理当前储存库的 GitHub 议题。
- hub-release(1)
- 管理当前储存库的 GitHub 发布。
- hub-sync(1)
- 从上游获取 git 对象并更新本地分支。
约定
大多数 hub 命令都应该在已存在的本地 git 储存库上下文中运行。Hub 会通过扫描其 git 远程来自动检测当前工作目录所属的 GitHub 储存库。
如果存在指向 GitHub 的多个 git 远程存储库,hub 认为主要存储库按优先顺序命名为“upstream”、“github”,或“origin”。
在使用分支时,建议将您自己的分支的 git 远程存储库命名为“origin”,将上游存储库的 git 远程存储库命名为“upstream”。请参阅 https://help.github.com/articles/configuring-a-remote-for-a-fork/
当前存储库的默认分支(通常为“master”)的检测方式如下
git symbolic-ref refs/remotes/origin/HEAD
其中 origin 是上游存储库的 git 远程存储库的名称。
当前检出分支被认为推送到其中的目标取决于 git config push.default
设置。如果该值为“upstream”或“tracking”,则分支的跟踪信息将以如下方式读取
git rev-parse --symbolic-full-name BRANCH@{upstream}
否则,hub 会扫描 git 远程存储库以查找第一个存在 refs/remotes/REMOTE/BRANCH
的存储库。会最后搜索“origin”、“github”和“upstream”远程存储库,原因是 hub 认为当前分支推送到您的分支的可能性高于推送到规范仓库的可能性。
配置
GitHub OAuth 身份验证
当第一次需要访问 API 并在 OAuth 令牌中交换它时,Hub 会提示输入 GitHub 用户名和密码,该令牌将会保存在 ~/.config/hub
中。
为避免收到提示,请使用 GITHUB_USER
和 GITHUB_PASSWORD
环境变量。
或者,您可以提供具有repo权限的访问令牌 GITHUB_TOKEN
。不会将其写入 ~/.config/hub
。
使用 HTTPS 代替 git 协议
如果您喜欢在 git 操作中使用 HTTPS 协议,您可以配置 hub 生成具有 https:
的所有 URL,而不是 git:
或 ssh:
$ git config --global hub.protocol https
这将影响 clone
、fork
、remote add
以及将缩写引用扩展为 GitHub repo URL 的其他 hub 命令。
GitHub Enterprise
默认情况下,hub 仅使用具有指向 github.com
的远程存储库的存储库。需要将 GitHub Enterprise 主机列入白名单,以将 hub 配置为将此类远程存储库视为 github.com
$ git config --global --add hub.host MY.GIT.ORG
init
和 clone
等命令的默认主机仍然为 github.com
,但这可以通过 GITHUB_HOST
环境变量受到影响
$ GITHUB_HOST=my.git.org git clone myproject
环境变量
HUB_VERBOSE
- 如果设置此环境变量,将会向 stderr 打印详细日志记录。
HUB_CONFIG
- 读取并存储集线器配置的文件路径。如果存在
XDG_CONFIG_HOME
,则默认为$XDG_CONFIG_HOME/hub
;否则为$HOME/.config/hub
。配置文件还在 XDG 基本目录规范中的XDG_CONFIG_DIRS
中搜索。 HUB_PROTOCOL
- 作为 git 克隆/推送的首选协议的“https”、“ssh”或“git”之一。
GITHUB_HOST
- 要默认使用的 GitHub 主机名,而不是“github.com”。
GITHUB_TOKEN
- 用于 GitHub API 请求的 OAuth 令牌。
GITHUB_USER
- 执行 GitHub API 操作的参与者的 GitHub 用户名。
GITHUB_PASSWORD
- 用于交换用户凭证以获取存储在集线器配置中的 OAuth 令牌的 GitHub 密码。如果未设置,可能会在首次运行时以交互方式提示输入。
GITHUB_REPOSITORY
- 采用“OWNER/REPO”格式的值,指定应针对其执行 API 操作的存储库。当前只用于推断 API 请求的
GITHUB_USER
的默认值。
问题
https://github.com/github/hub/issues
作者
https://github.com/github/hub/contributors
另请参阅
git(1)、git-clone(1)、git-remote(1)、git-init(1)、https://github.com/github/hub